Úvod do životného cyklu vlákna v Jave

Vlákno prežíva početné fázy životného cyklu. Ako niť prichádza na svet, začala, utekala a potom zmizla. Nasledujúci diagram vysvetľuje celý životný cyklus závitu.

  • Thread Constructor vytvára vlákno prostredníctvom nového stavu.
  • Volanie začína v Thread metóde, ktorá môže prejsť cez spustiteľný stav.
  • Plánovač vlákien týkajúci sa Java spustí toto vlákno, keď procesor dostane.
  • Keď vlákno prejde do blokovaného stavu, bude sa znova spustiť, pretože sa vráti do spustiteľného stavu.
  • Ak sa metóda čakania označuje ako vlákno, prejde na čakanie na stav, čoskoro po tom, čo sa stane upozornením v rámci informovania, bude prepnutá do spustiteľného stavu, ako aj oznámením všetkým spôsobom.
  • Koniec vlákna sa ukončí, keď sa ukončí metóda spustenia.

Čo je vlákno?

Vlákno je definované na úrovni operačného systému. A jazyk Java, rovnako ako všetky ostatné jazyky, využíva, využíva pákový efekt, službu, ktorú poskytuje operačný systém. Z pohľadu vývojára je vlákno súbor pokynov, ktoré chystáme napísať našu aplikáciu a vykonať určitým spôsobom. Samotná aplikácia sa môže skladať z niekoľkých vlákien. Súčasne môžu byť vykonávané rôzne vlákna. JVM (Java Virtual Machine) pracuje s niekoľkými vláknami. Existujú vlákna pre zber odpadu. Existujú vlákna pre kompilátor Just in Time a ďalšie technické vlákna.

Štáty životného cyklu vlákna v Jave

Nižšie sú uvedené rôzne stavy životného cyklu vlákna v Java:

1. Nový: Nové vlákno začína svoj životný cyklus vo vnútri nového stavu. V tomto stave je aj naďalej, kým program nespustí vlákno. Ďalej je známy ako vytvorené vlákno.

2. Spustiteľné: Po začatí nedávno narodeného vlákna sa vlákno zmení na spustiteľné. Vlákno s týmto stavom sa považuje za vykonávanie ich procesu.

3. Čakanie: Príležitostne sa vykoná prechod vlákna smerom k čakaniu okolo stavu, aj keď vlákno čaká na vykonanie iného vlákna. Prechod vlákna sa vracia do stavu, ktorý je možné spustiť, iba ak ďalší vlákno indikuje čakajúce vlákno, aby sa pokračovalo vo vykonávaní.

4. Časované čakanie: Spustiteľné vlákno dokáže ľahko konkrétny časovaný čakanie na stav, aby získal konkrétny časový interval. Vlákno s týmto prechodom stavu sa vracia do spustiteľného stavu po uplynutí tohto intervalu bodov alebo ak dôjde k udalosti, na ktorú skutočne čaká.

5. Ukončené: Spustiteľné vlákno sa dostane do ukončeného stavu, pretože vykonáva svoju úlohu alebo inak končí.

Ako vytvoriť vlákno v Jave?

Najzákladnejším spôsobom vytvorenia vlákna v Jave je použitie vzoru Runnable Pattern. Najprv musíte vytvoriť inštanciu rozhrania Runnable, ktoré je veľmi ľahké; existuje iba jeden spôsob implementácie. Potom túto inštanciu odovzdáme konštruktérovi triedy vlákien. A potom zavoláme metódu start () tohto vytvoreného objektu vlákna, na spustenie nového vlákna, ktoré bude spúšťať úlohu zabalenú do nášho objektu Runnable.

Najprv vytvoríme inštanciu Runnable. Existuje iba jedna metóda na implementáciu, ktorá sa nazýva metóda run (). Toto je vzor Java 7, ktorý to robí s inštanciou anonymnej triedy. Môžeme však použiť aj výraz lambda na implementáciu Runnable, pretože v rozhraní Runnable je iba jedna metóda.

Vytvorme vlákna na veľmi jednoduchých príkladoch

Uvidíme, čo sa môže pokaziť so stavom rasy, ktorý je s nesynchronizovaným kódom, ktorý by sa mal synchronizovať a náš kód opravíme pomocou synchronizácie. Tento prvý príklad je veľmi jednoduchý, je veľmi jednoduchý. Je to len o vytvorení úlohy.

Výkon:

Úloha je príkladom rozhrania Runnable, nazvime ho runnable a toto rozhranie môžeme implementovať pomocou výrazu lambda. Táto úloha je pridelená novému vláknu a vykonaná v kontexte tohto vlákna. Takže sa chystáme vytlačiť názov vlákna, ktoré túto úlohu spúšťa. Bežím v … Thread.currentThread () je statická metóda triedy Thread, ktorá vracia vlákno, na ktorom je spustená aktuálna úloha. A na tento objekt vlákna musíme zavolať getName (), aby sme vrátili názov vlákna. Potom, keď vytvoríme inštanciu vlákna, t = nové vlákno. Tento parameter je možné odovzdať ako parameter. Takže toto vlákno vykoná tento kus kódu. A začať to. t.start () je to metóda start (), ktorú musíme zavolať. Môžeme tiež urobiť explicitné meno tohto vlákna pomocou t.setName („Moje vlákno“). A teraz môžeme tento kód spustiť. Teraz namiesto metódy call start () nazývame metódu run (), a ak spustíme tento kód, problém je v tom, že úloha je správne vykonaná, ale nie je vykonaná v vlákne, ktoré sme vytvorili. Vykonáva sa v hlavnom vlákne, ktoré je vláknom vykonávajúcim hlavnú metódu. Táto metóda run () by sa nemala volať, ak chceme spustiť nové vlákno.

Výkon:

Metódy životného cyklu vlákna v Java

Metódy opísané jednoducho Thread sú uvedené v tabuľke.

Typy údajovNázvy metód závitu
povrázok

getName ()

Vráťte názov tohto vlákna

intdostať prioritu ()

Vracia prioritu vlákna

booleanje nažive()

Testuje, či toto vlákno stále beží

prázdnojoin ()

Čaká, kým toto vlákno zomrie (ukončí sa)

prázdnorun ()

Kedykoľvek bolo toto vlákno vytvorené pomocou individuálneho spustiteľného objektu, potom sa nazýva metóda spustenia spraviteľného objektu; alebo inak sa táto metóda nevráti. Kedykoľvek je možné triedu vlákien rozšíriť a tiež, metóda run () sa počas podtriedy prepíše, potom sa volá metóda over-ridden run ().

prázdnosetName ( String name )

Upraví názov pomocou tohto vlákna, aby sa stal porovnateľným s názvom argumentu.

statická medzera

spánok ( dlhá Millis ) vyvolá prerušenie / výnimku
Spôsobí, že vlákno, ktoré sa práve vykonáva, odpočíva
požadované množstvo milisekúnd.
statická medzeraspánok ( dlhá milis, int nanos ) vyvolá prerušenie výnimky

Spôsobuje, že vlákno, ktoré sa v súčasnosti vykonáva, spí (ukončí vykonávanie) na požadované množstvo milisekúnd, ako aj na konkrétne množstvo nanosekúnd.

prázdnoštart ()

Spustí tieto vlákna na spustenie vykonávania; Java Virtual Machine volá metódu spustenia tohto vlákna.

statická medzeraZíska sa ()

Spustí v súčasnosti objekt vlákna, aby sa nakrátko pozastavil a umožnil vykonanie ďalších vlákien.

statické vláknocurrentThread ()

Vracia zmienku o práve vykonávanom objekte vlákna.

záver

  • Jednoduché začatie používania vlákien, mimoriadne ťažké uchopiť.
  • Navrhovanie tried, ktoré obsahujú metódy, ktoré môžu byť bezpečné pomocou vlákna, je náročné.
  • Prečítajte si: JavaDoc a získajte triedu java.lang.Thread

Odporúčaný článok

Toto bol Sprievodca životným cyklom vlákna v Jave. Tu diskutujeme o tom, čo je vlákno? a rôzne stavy životného cyklu vlákna spolu s vytváraním vlákien v jave. Viac informácií nájdete aj v ďalších navrhovaných článkoch -

  1. Rámce v Jave
  2. Hviezdne vzory v Jave
  3. Zlúčiť zoradenie v jazyku Java
  4. Najlepšie Java kompilátory
  5. Statická metóda v PHP

Kategórie: