Úvod do životního cyklu vlákna v Javě

Vlákno zažívá četné fáze životního cyklu. Jako nit přichází na svět, vycházel, běžel a poté odešel. Následující diagram vysvětluje celý životní cyklus závitu.

  • Thread Constructor vytváří vlákno prostřednictvím nového stavu.
  • Volání zahájí metodu ve vláknu a může ji provést prostřednictvím stavu, který lze spustit.
  • Plánovač vláken týkající se Java spustí toto vlákno, když procesor obdrží.
  • Když vlákno přejde do blokovaného stavu, bude znovu spuštěno, protože se vrátí do stavu, který lze spustit.
  • Pokud je metoda čekání označována jako podproces, který přejde do čekání na stav, přejde do provozuschopného stavu brzy poté, co se stane oznámením v rámci informovat a také oznámit všem způsobem.
  • Konec vlákna končí, jakmile se ukončí metoda běhu.

Co je vlákno?

Vlákno je definováno na úrovni operačního systému. A jazyk Java, stejně jako všechny ostatní jazyky, používá, páky, službu poskytovanou operačním systémem. Z pohledu vývojáře je vlákno soubor pokynů, které hodláme napsat naši aplikaci a určitým způsobem provést. Samotná aplikace může být složena z několika vláken. Současně lze provádět různá vlákna. JVM (Java Virtual Machine) pracuje s několika vlákny. Pro sběr odpadu jsou vlákna. Existují vlákna pro kompilátor Just in Time a další technická vlákna.

Státy životního cyklu vlákna v Javě

Níže jsou uvedeny různé stavy životního cyklu vlákna v Javě:

1. Nový: Nová nit začíná svůj životní cyklus uvnitř nového stavu. V tomto stavu je i nadále, než program spustí vlákno. Navíc je znám jako vytvořené vlákno.

2. Runnable: Poté, co může začít nedávno vytvořené vlákno, se vlákno změní na runnable. Vlákno s tímto stavem je považováno za provádění jejich procesu.

3. Čekání: Občas se provede přechod vlákna směrem k čekání kolem stavu, i když vlákno čeká na další vlákno k provedení činnosti. Přechody vlákna se vracejí do stavu, který lze spustit, pouze pokud další vlákno indikuje čekající vlákno, aby se pokračovalo v provádění.

4. Časované čekání: Spustitelné vlákno snadno dokáže konkrétní časované čekání na stav, aby získalo určitý časový interval. Vlákno s tímto přechodem stavu se vrací do provozuschopného stavu, jakmile tento interval bodů vyprší nebo pokud nastane událost, na kterou skutečně čeká.

5. Ukončeno: Spustitelné vlákno se dostane do ukončeného stavu, protože splní svůj úkol nebo jinak ukončí.

Jak vytvořit vlákno v Javě?

Nejzákladnějším způsobem vytvoření vlákna v Javě je použití vzoru Runnable Pattern. Nejprve musíte vytvořit instanci rozhraní Runnable, což je velmi snadné; existuje pouze jedna metoda implementace. Pak předáme tuto instanci konstruktoru třídy Thread. A pak voláme pouze metodu start () tohoto vytvořeného objektu podprocesu, abychom spustili nový podproces, který bude spouštět úlohu zabalenou do našeho objektu Runnable.

Nejprve tedy vytvoříme instanci Runnable. Existuje pouze jedna metoda implementace, která se nazývá metoda run (). Toto je vzor Java 7, který to dělá, s instancí anonymní třídy. Můžeme však také použít výraz lambda k implementaci Runnable, protože v rozhraní Runnable existuje pouze jedna metoda.

Vytvořme vlákna na velmi jednoduchých příkladech

Uvidíme, co se může pokazit s podmínkou závodu, která je s nesynchronizovaným kódem, který by měl být synchronizován, a my jej opravíme pomocí synchronizace. Tento první příklad je velmi jednoduchý, je velmi jednoduchý. Jde jen o vytvoření úkolu.

Výstup:

Úloha je instancí rozhraní Runnable, nazvěme ji runnable a toto rozhraní můžeme implementovat pomocí výrazu lambda. Tato úloha je dána novému vláknu a vykonávána v kontextu tohoto vlákna. Takže si právě vytiskneme název vlákna, které tuto úlohu spouští. Jsem spuštěn v … Thread.currentThread () je statická metoda třídy Thread, která vrací vlákno, na kterém běží aktuální úloha. A musíme jen zavolat getName () na tento objekt podprocesu, abychom vrátili název podprocesu. Poté, co vytvoříme instanci Thread t = new Thread. Předání této runnable jako parametru. Toto vlákno tedy provede tento kus kódu. A spustit jej. t.start () je to metoda start (), kterou musíme zavolat. Můžeme také udělat explicitní název tohoto vlákna pomocí t.setName („Moje vlákno“). A nyní můžeme tento kód spustit. Nyní místo metody call start () voláme metodu run () a pokud spustíme tento kód, problém je v tom, že úloha je provedena správně, ale není provedena v podprocesu, který jsme vytvořili. Provádí se v hlavním vláknu, což je vlákno provádějící hlavní metodu. Tuto metodu run () bychom tedy neměli volat, pokud chceme spustit nové vlákno.

Výstup:

Metody životního cyklu vlákna v Javě

Metody popsané jednoduše Thread jsou uvedeny v tabulce.

Typy datNázvy metod vláken
Tětiva

getName ()

Vraťte název tohoto vlákna

intzískat prioritu ()

Vrátí prioritu vlákna

booleanje naživu()

Testuje, zda toto vlákno stále běží

neplatnýpřipojit()

Čeká, až toto vlákno zemře (ukončí se)

neplatnýběh()

Kdykoli bylo toto vlákno vytvořeno pomocí samostatného objektu Runnable, potom se nazývá metoda Runnable objektu, která se obvykle používá; nebo jinde se tato metoda nevrátí. Kdykoli lze třídu podprocesů rozšířit a metoda run () je během podtřídy přepsána, je volána přepsaná metoda run ().

neplatnýsetName ( String name )

Změní název pomocí tohoto vlákna tak, aby byl srovnatelný s názvem argumentu.

statická mezera

spánek ( dlouhý milis ) vyvolá přerušení / výjimku
Způsobí, že vlákno, které se právě provádí, odpočívá
požadované množství milisekund.
statická mezeraspánek ( dlouhé milis, int nanos ) vyvolá přerušenou výjimku

To způsobuje, že vlákno, které je v současné době prováděno, spí (zastaví provádění) po požadované množství milisekund a konkrétní množství nanosekund.

neplatnýStart()

Spustí tato vlákna pro spuštění provádění; Java Virtual Machine volá metodu běhu tohoto vlákna.

statická mezeravýtěžek()

Spustí objekt aktuálně podprocesu, aby se krátce pozastavil a umožnil provedení dalších podprocesů.

statické vláknocurrentThread ()

Vrací zmínku o právě prováděném objektu podprocesu.

Závěr

  • Jednoduché začít používat vlákna, extrémně obtížné pochopit.
  • Navrhování tříd, které obsahují metody, které mohou být bezpečné pomocí podprocesů, je náročné.
  • Přečtěte si: JavaDoc a získejte třídu java.lang.Thread

Doporučený článek

Toto byl Průvodce životním cyklem vlákna v Javě. Zde diskutujeme, co je vlákno? a různé stavy životního cyklu vlákna spolu s vytvářením vláken v javě. Další informace naleznete také v dalších navrhovaných článcích -

  1. Rámce v Javě
  2. Hvězdné vzory v Javě
  3. Sloučit řazení v Javě
  4. Nejlepší Java překladače
  5. Statická metoda v PHP

Kategorie: