logo

Koncept vlákna v Javě

Před představením vlákno koncept , nemohli jsme paralelně spustit více než jednu úlohu. Byla to nevýhoda, a abych tuto nevýhodu odstranil, Závit Koncept byl představen.

A Vlákno je velmi odlehčený proces, nebo můžeme říci nejmenší část procesu, která umožňuje programu pracovat efektivněji tím, že spouští více úloh současně.

binární strom mail order traversal

Abychom mohli provádět složité úkoly na pozadí, použili jsme Koncept vlákna v Javě . Všechny úlohy se provádějí bez ovlivnění hlavního programu. V programu nebo procesu mají všechna vlákna svou vlastní samostatnou cestu pro provádění, takže každé vlákno procesu je nezávislé.

Koncept vlákna v Javě

Další výhodou použití vlákno je, že pokud vlákno dostane výjimku nebo chybu v době svého provádění, neovlivní to provádění ostatních vláken. Všechna vlákna sdílejí společnou paměť a mají svůj vlastní zásobník, lokální proměnné a programový čítač. Pokud je paralelně spuštěno více vláken současně, tento proces se nazývá Vícevláknové zpracování .

Jednoduše řečeno, vlákno je:

  • Funkce, pomocí které můžeme provádět více činností v rámci jednoho procesu.
  • Lehký proces.
  • Řada provedených příkazů.
  • Vnořená sekvence volání metod.

Model závitu

Stejně jako proces existuje vlákno v několika stavech. Tyto stavy jsou následující:

Koncept vlákna v Javě

1) Nové (připraveno ke spuštění)

Je tam vlákno Nový když dostane čas CPU.

2) Běh

Je tam vlákno a Běh stavu, kdy je v exekuci.

3) Pozastaveno

Vlákno je v Pozastaveno stav, kdy je dočasně neaktivní nebo probíhá.

4) Zablokováno

Vlákno je v Blokováno stav, kdy čeká na zdroje.

funkce java8

5) Ukončeno

Vlákno se dostane do tohoto stavu, když v kterýkoli daný okamžik okamžitě zastaví své provádění.

Vytváření vlákna

Vlákno je vytvořeno buď „vytvořením nebo implementací“. Spustitelné rozhraní nebo prodloužením Třída nití . Toto jsou jediné dva způsoby, kterými můžeme vytvořit vlákno.

Pojďme se ponořit do podrobností obou těchto způsobů vytváření vlákna:

Třída vláken

A Třída nití má několik metod a konstruktorů, které nám umožňují provádět různé operace s vláknem. Třída Thread rozšiřuje Objekt třída. The Objekt třída implementuje Spustitelný rozhraní. Třída vlákna má následující konstruktory, které se používají k provádění různých operací.

    Vlákno() Vlákno (spustitelné, název řetězce) Vlákno (spustitelný cíl) Vlákno (skupina ThreadGroup, Spustitelný cíl, Název řetězce) Vlákno (skupina ThreadGroup, spustitelný cíl) Vlákno (skupina ThreadGroup, název řetězce) Vlákno (skupina ThreadGroup, Runnable target, String name, long stackSize)

Runnable Interface (metoda run())

Rozhraní Runnable musí být implementováno tou třídou, jejíž instance mají být spouštěny vláknem. Spustitelné rozhraní nám poskytuje běh() metoda k provedení akce pro vlákno.

metoda start().

Metoda se používá pro spuštění vlákna, které jsme nově vytvořili. Začne nové vlákno s novým zásobníkem volání. Po provedení Start() metoda, vlákno změní stav z New na Runnable. Provádí metoda run(). když vlákno dostane správný čas k provedení.

Vezměme si příklad, abychom pochopili, jak můžeme vytvořit a Jáva vlákno rozšířením třídy Thread:

fcfs

ThreadExample1.java

 // Implementing runnable interface by extending Thread class public class ThreadExample1 extends Thread { // run() method to perform action for thread. public void run() { int a= 10; int b=12; int result = a+b; System.out.println('Thread started running..'); System.out.println('Sum of two numbers is: '+ result); } public static void main( String args[] ) { // Creating instance of the class extend Thread class ThreadExample1 t1 = new ThreadExample1(); //calling start method to execute the run() method of the Thread class t1.start(); } } 

Výstup:

Koncept vlákna v Javě

Vytvoření vlákna implementací spustitelného rozhraní

V Javě můžeme také vytvořit vlákno implementací spustitelného rozhraní. Runnable rozhraní nám poskytuje jak metodu run(), tak metodu start().

Vezměme si příklad, abychom pochopili, jak můžeme vytvořit, spustit a spustit vlákno pomocí spustitelného rozhraní.

ThreadExample2.java

 class NewThread implements Runnable { String name; Thread thread; NewThread (String name){ this.name = name; thread = new Thread(this, name); System.out.println( 'A New thread: ' + thread+ 'is created
' ); thread.start(); } public void run() { try { for(int j = 5; j > 0; j--) { System.out.println(name + ': ' + j); Thread.sleep(1000); } }catch (InterruptedException e) { System.out.println(name + ' thread Interrupted'); } System.out.println(name + ' thread exiting.'); } } class ThreadExample2 { public static void main(String args[]) { new NewThread('1st'); new NewThread('2nd'); new NewThread('3rd'); try { Thread.sleep(8000); } catch (InterruptedException excetion) { System.out.println('Inturruption occurs in Main Thread'); } System.out.println('We are exiting from Main Thread'); } } 

Výstup:

Koncept vlákna v Javě

Ve výše uvedeném příkladu provádíme multithreading implementací spustitelného rozhraní. Chcete-li se dozvědět více o multithreadingu, klikněte zde .