Uvod v življenjski cikel niti na Javi

Niti doživljajo številne faze v življenjskem ciklu. Kot na primer, nit prihaja na svet, se začne, teče in zatem mine. Naslednji diagram razloži celoten življenjski cikel niti.

  • Konstruktor navojev ustvari nit skozi novo stanje.
  • Če kličete, da začnete metodo v niti, lahko to storite v stanju, ki ga je mogoče izvesti.
  • Načrtovalec navojev v zvezi z Javo izvaja to nit, ko procesor prejme.
  • Ko bi nit prešla v blokirano stanje, se bo začela izvajati še enkrat, ker se vrne v stanje, ki ga je mogoče izvesti.
  • Če je metoda čakanja omenjena kot nit, bi šla v čakanje na državo, bi šla v stanje, ki ga je mogoče izvesti, kmalu potem, ko bo postala obveščena v celotnem Informu, kot tudi o notifikaciji vseh metod.
  • Ko se način izvajanja konča, se nit konča.

Kaj je nit?

Navoj je definiran na ravni operacijskega sistema. In jezik Java, kot tudi vsi drugi jeziki, uporablja, uporablja, uporablja storitev, ki jo ponuja operacijski sistem. Z vidika razvijalca je nit nabor navodil, ki jih bomo napisali in uporabili na določen način. Sama aplikacija je lahko sestavljena iz več niti. Hkrati se lahko izvedejo različne niti. JVM (Java Virtual Machine) deluje z več niti. Za zbiranje smeti obstajajo niti. Obstajajo niti za prevajalnik Just in Time in druge tehnične teme.

Stanje življenjskega cikla niti na Javi

Spodaj so različna stanja življenjskega cikla niti na Javi:

1. Novo: Nova nit začne svoj življenjski cikel znotraj novega stanja. S tem stanjem še naprej, preden program začne nit. Poleg tega je znan kot ustvarjena nit.

2. Izvleč: Ko se pred kratkim lahko začne nit, se nit spremeni v izvedljivo. Šteje se, da nit s tem stanjem izvaja njihov postopek.

3. Čakanje: Občasno prehod niti proti stanju, ki čaka, čeprav nit čaka na drugo nit za izvedbo aktivnosti. Navoj prehaja v vrnljivo stanje le, če dodatni navoj kaže na čakalno nit, ki naj še naprej deluje.

4. Časovno čakanje: Navoj, ki ga lahko izpeljete, zlahka konzervira določeno časovno čakanje, da stanje dobi določen interval časa. Konec s tem stanjem se vrne v stanje, ki ga je mogoče izvesti, ko poteče ta časovni interval ali če se zgodi dogodek, ki ga resnično čaka.

5. Prekinjeno: Izvodna nit preide v končano stanje, ker opravi svojo nalogo ali drugače preneha.

Kako ustvariti nit v Java?

Najosnovnejši način za ustvarjanje niti v Javi je uporaba vzorca Runnable. Najprej morate ustvariti primerek vmesnika Runnable, ki je zelo enostaven; obstaja samo ena metoda za izvajanje. Nato prenesemo ta primer konstruktorju razreda Thread. In šele nato pokličemo metodo start () tega ustvarjenega predmeta niti, da zaženemo novo nit, ki bo izvajala nalogo, zavito v naš objekt Runnable.

Torej najprej ustvarimo primerek Runnable. Za izvedbo obstaja samo ena metoda, ki se imenuje metoda run (). To je vzorec Java 7, ki to stori z primerkom anonimnega razreda. Lahko pa uporabimo tudi lambda izraz za izvajanje Runnable, saj je v vmesniku Runnable le ena metoda.

Ustvarimo teme na zelo preprostih primerih

Bomo videli, kaj lahko gre narobe s dirkaškim stanjem, ki je z nesinhronizirano kodo, ki bi jo bilo treba sinhronizirati, in kodo bomo popravili s sinhronizacijo. Ta prvi primer je zelo preprost, zelo osnovni. Gre samo za ustvarjanje naloge.

Izhod:

Naloga je primerek vmesnika Runnable, poimenujemo ga runnable, ta vmesnik pa lahko implementiramo z izrazom lambda. Ta naloga je dana novi niti in izvedena v kontekstu te teme. Torej bomo šele natisnili ime niti, ki izvaja to nalogo. Tečem v… Thread.currentThread () je statična metoda razreda Thread, ki vrne nit s trenutno nalogo. In na ta predmet niti moramo poklicati getName (), da vrnemo ime niti. Potem, ko ustvarimo primerek Thread t = nov Thread. Prenos te izvedljivosti kot parametra. Torej, ta nit bo izvedla ta del kode. In za začetek. t.start () to je metoda start (), ki jo moramo poklicati. Prav tako lahko izrecno poimenujemo to nit z uporabo t.setName ("Moja nit"). In zdaj lahko izvedemo to kodo. Zdaj namesto metode start () pokličemo metodo run () in če izvajamo to kodo, je težava v tem, da je naloga pravilno izvedena, vendar ni izvedena v niti, ki smo jo ustvarili. Izvaja se v glavni niti, ki je nit, ki izvaja glavno metodo. Torej te metode run () ne bi smeli priklicati, če želimo začeti novo nit.

Izhod:

Metode življenjskega cikla niti na Javi

Metode, ki jih je opisal preprosto Thread, so predstavljene v tabeli.

Vrste podatkovImena metode navoja
Vrvica

getName ()

Vrnite ime te niti

intdobili prednost ()

Vrne prednost niti

booleanisAlive ()

Preizkusi, če ta nit še vedno teče

ničnapridruži se ()

Počaka, da ta nit umre (preneha)

ničnateči ()

Kadar koli je bila ta nit zgrajena z uporabo posameznega predmeta Runnable, po katerem se običajno imenuje način izvajanja predmeta Runnable objekt; ali pa se ta metoda ne bo vrnila. Kadar koli se lahko razred navojev tako razširi, kot tudi metoda run () med podklaso, se prikliče metoda over-ridden run ().

ničnasetName ( ime niza )

Spremeni ime s to nitjo, da postane primerljivo z imenom argumenta.

statična praznina

spanje ( dolgo miljo ) meče Prekinjeno / Izjema
Vzrok temu počiva trenutno delujoča nit
zahtevano količino milisekund.
statična prazninaspanje ( dolgi milis, int nanos ) vrže InterruptException

To povzroči, da trenutno delujoča nit zaspi (preneha z izvajanjem) za zahtevano količino milisekund kot tudi določeno količino nanosekund.

ničnastart ()

Sproži te niti za začetek izvajanja; Java navidezni stroj pokliče postopek zagona te niti.

statična prazninadonos ()

Sproži predmet trenutno nit, da na kratko začasno ustavi in ​​dovoli izvajanje dodatnih niti.

statična nitcurrentThread ()

Vrne omembo trenutno izvajanega predmeta niti.

Zaključek

  • Enostavno za začetek uporabe niti, izjemno težko dojemanje.
  • Oblikovanje razredov, ki vsebujejo metode, ki jih je mogoče zaščititi z nitmi, je izziv.
  • Preberite: JavaDoc, da pridobite razred java.lang.Thread

Priporočeni članek

To je vodnik po življenjskem ciklu niti na Javi. Tukaj razpravljamo o tem, kaj je nit? in različna stanja življenjskega cikla niti, skupaj z ustvarjanjem niti v javi. Če želite izvedeti več, lahko preberete tudi druge naše predlagane članke -

  1. Okviri na Javi
  2. Zvezdni vzorci na Javi
  3. Združi sortiranje v Javi
  4. Najboljši Java Compilers
  5. Statična metoda v PHP