Pred zavedením koncept vlákna , nepodarilo sa nám spustiť viac ako jednu úlohu súčasne. Bola to nevýhoda a odstrániť túto nevýhodu, Koncept vlákna bol predstavený.
A Niť je veľmi odľahčený proces, alebo môžeme povedať najmenšia časť procesu, ktorá umožňuje programu pracovať efektívnejšie spustením viacerých úloh súčasne.
java ako prepísať
Na vykonávanie zložitých úloh na pozadí sme použili Koncept vlákna v Jave . Všetky úlohy sa vykonajú bez ovplyvnenia hlavného programu. V programe alebo procese majú všetky vlákna svoju vlastnú samostatnú cestu na vykonanie, takže každé vlákno procesu je nezávislé.
Ďalšia výhoda použitia niť je, že ak vlákno dostane výnimku alebo chybu v čase svojho vykonávania, neovplyvní to vykonávanie ostatných vlákien. Všetky vlákna zdieľajú spoločnú pamäť a majú svoj vlastný zásobník, lokálne premenné a programové počítadlo. Keď sa paralelne vykonáva viacero vlákien súčasne, tento proces je známy ako Multithreading .
Jednoduchým spôsobom je vlákno:
- Funkcia, prostredníctvom ktorej môžeme vykonávať viacero činností v rámci jedného procesu.
- Ľahký proces.
- Séria vykonaných príkazov.
- Vnorená sekvencia volaní metód.
Model závitu
Rovnako ako proces, vlákno existuje v niekoľkých stavoch. Tieto stavy sú nasledovné:
1) Nové (pripravené na spustenie)
Je tam vlákno Nový keď dostane čas CPU.
2) Beh
Je tam vlákno a Beh stav, kedy je v exekúcii.
strojopis dátum čas
3) Pozastavené
Vlákno je v Pozastavené stav, kedy je dočasne neaktívny alebo v exekúcii.
4) Blokované
Vlákno je v Zablokované stav, kedy čaká na zdroje.
5) Ukončené
Vlákno sa dostane do tohto stavu, keď v ľubovoľnom čase okamžite zastaví svoje vykonávanie.
Vytváranie vlákna
Vlákno sa vytvára buď „vytvorením alebo implementáciou“. Spustiteľné rozhranie alebo rozšírením Trieda nití . Toto sú jediné dva spôsoby, ktorými môžeme vytvoriť vlákno.
Poďme sa ponoriť do detailov oboch týchto spôsobov vytvárania vlákna:
Trieda závitov
A Trieda nití má niekoľko metód a konštruktorov, ktoré nám umožňujú vykonávať rôzne operácie s vláknom. Trieda Thread rozširuje Objekt trieda. The Objekt trieda implementuje Spustiteľné rozhranie. Trieda vlákna má nasledujúce konštruktory, ktoré sa používajú na vykonávanie rôznych operácií.
Spustiteľné rozhranie (metóda run())
Rozhranie Runnable musí byť implementované tou triedou, ktorej inštancie sú určené na spustenie vláknom. Spustiteľné rozhranie nám poskytuje spustiť() metóda na vykonanie akcie pre vlákno.
metóda start().
Metóda sa používa na spustenie vlákna, ktoré sme novo vytvorili. Začne nové vlákno s novým zásobníkom volaní. Po vykonaní začať () metóda, vlákno zmení stav z New na Runnable. Vykonáva sa metóda run(). keď vlákno dostane správny čas na jeho vykonanie.
Zoberme si príklad, aby sme pochopili, ako môžeme vytvoriť a Java vlákno rozšírením triedy Thread:
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ýkon:
Vytvorenie vlákna implementáciou spustiteľného rozhrania
V Jave môžeme tiež vytvoriť vlákno implementáciou runnable interface. Spustiteľné rozhranie nám poskytuje metódu run() aj metódu start().
Vezmime si príklad, aby sme pochopili, ako môžeme vytvoriť, spustiť a spustiť vlákno pomocou spustiteľného rozhrania.
ThreadExample2.java
programová slučka 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ýkon:
Vo vyššie uvedenom príklade vykonávame multithreading implementáciou spustiteľného rozhrania. Ak sa chcete dozvedieť viac o multithreadingu, kliknite tu .