Uvod u životni ciklus teme na Javi

Konac proživljava brojne faze u životnom ciklusu. Kao što je, nit, svijet ulazi u svijet, započinje, teče i nakon toga prolazi. Sljedeći dijagram objašnjava cijeli životni ciklus niti.

  • Konstruktor navoja stvara nit kroz novo stanje.
  • Ako pozovete metodu započeti u Thread, možete je izvršiti u stanju pokretanja.
  • Alat za planiranje niti koji se odnosi na Java pokreće tu nit kada procesor primi.
  • Kad bi nit prešla u blokirano stanje, ponovno će se pokrenuti jer se vraća u stanje koje je moguće pokrenuti.
  • Ako bi se metoda čekanja označila kao nit, otišla bi na čekanje države, prešla bi u stanje za pokretanje ubrzo nakon što će postati obavijest u cijeloj Informi, kao i metoda notifikacije svih.
  • Konac navoja završava nakon što se postupak izvođenja prekine.

Što je nit?

Navoj je definiran na razini operativnog sustava. A Java jezik, kao i svi drugi jezici, koristi, koristi, uslugu koju pruža operativni sustav. Sa gledišta programera, nit je skup uputstava koje ćemo napisati u prijavi i izvesti na određeni način. Sama aplikacija može se sastojati od više niti. Istovremeno se mogu izvršiti različite niti. JVM (Java Virtual Machine) radi s nekoliko niti. Postoje niti za prikupljanje smeća. Postoje niti za sastavljač Just in Time i druge tehničke teme.

Stanje životnog ciklusa niti u Javi

Ispod su različita stanja životnog ciklusa niti na Javi:

1. Novo: Nova nit započinje svoj životni ciklus unutar novog stanja. I dalje je s ovim stanjem prije nego što program započne nit. Uz to, poznata je i kao stvorena nit.

2. Izvodljivo: Nakon što se nedavno rođeni konac može započeti, nit se pretvara u pokretnu nit. Smatra se da nit s ovim stanjem izvodi njihov postupak.

3. Čekanje: Povremeno se prelazak niti prema stanju čekanja, iako nit čeka drugi niz za izvršavanje neke aktivnosti. Navoj prelazi u stanje koje se može pokrenuti samo ako dodatni navoj označava nit koja čeka da nastavi raditi.

4. Vremensko čekanje: Konac koji se može pokrenuti lako konzervira određeno vrijeme koje čeka da država dobije određeni interval vremena. Konac s tim stanjem prijelazi u stanje koje se može pokrenuti nakon što taj interval točaka istekne ili se dogodi događaj koji stvarno čeka.

5. Prekinuti: Konac koji se može pokrenuti dovodi se u stanje raskida jer ispunjava zadaću ili se prekida.

Kako stvoriti nit u Javi?

Najosnovniji način stvaranja niti u Javi je korištenje uzorka Runnable. Prvo morate stvoriti instancu Runnable sučelja, što je vrlo jednostavno; postoji samo jedna metoda za implementaciju. Zatim prosljeđujemo ovaj primjerak konstruktoru klase Thread. A onda samo zovemo metodu start () ovog nitnog predmeta kreiranog kako bismo pokrenuli novu nit koja će pokrenuti zadatak zamotan u naš Runnable objekt.

Prvo stvorimo instancu Runnable-a. Postoji samo jedna metoda za implementaciju, koja se naziva metoda run (). To je uzorak Java 7 za to, s instancom anonimne klase. Ali također možemo upotrijebiti lambda izraz za implementaciju Runnablea jer postoji samo jedna metoda u Runnable sučelju.

Kreirajmo teme na vrlo jednostavnim primjerima

Vidjet ćemo što može poći po zlu s uvjetima utrke koji su s nesinkroniziranim kodom koji bi trebao biti sinkroniziran i popravit ćemo svoj kôd koristeći sinkronizaciju. Ovaj prvi primjer je vrlo jednostavan, vrlo je osnovni. Radi se samo o stvaranju zadatka.

Izlaz:

Zadatak je instanca Runnable sučelja, nazovimo to runnable i to sučelje možemo implementirati pomoću lambda izraza. Ovaj zadatak je zadan u novom niti i izveden je u kontekstu ove niti. Samo ćemo ispisati naziv niti koji izvodi taj zadatak. Trčim u … Thread.currentThread () je statička metoda klase Thread koja vraća nit kojom se izvodi trenutni zadatak. I samo moramo pozvati getName () na ovaj objekt niti da bismo vratili naziv niti. Zatim nakon što stvorimo instancu Thread t = new Thread. Prolazak ove trke kao parametara. Dakle, ova nit će izvršiti ovaj dio koda. I za lansiranje. t.start () ovo je metoda start () koju trebamo pozvati. Ono što također možemo učiniti je dati izričit naziv ovom niti pomoću t.setName ("Moja nit"). A sada možemo izvršiti ovaj kod. Sada umjesto metode start () pozivamo metodu run (), a ako pokrenemo ovaj kod, problem je u tome što je zadatak pravilno izveden, ali nije izvršen u niti koju smo stvorili. Izvodi se u glavnom niti, koji je nit koja izvodi glavnu metodu. Dakle, ova metoda run () ne bi se trebala pozivati ​​ako želimo pokrenuti novu nit.

Izlaz:

Metode životnog ciklusa niti u Javi

Metode opisane pomoću jednostavnih niti prikazane su u tablici.

Vrste podatakaNazivi metoda navoja
Niz

getName ()

Vratite ime ove niti

intdobiti prioritet ()

Vraća prioritet niti

booleanživ je()

Ispitivanja je li ova nit još uvijek pokrenuta

poništitipridružiti()

Čeka da ova nit umre (prekine)

poništititrčanje()

Kad god je ta nit izrađena koristeći pojedinačni Runnable objekt, nakon toga, što se obično naziva način izvođenja Runnable objekta; ili se drugačije neće vratiti. Kad god se klasa niti može proširiti, kao i metoda, run (), over-ridden tijekom podklase, tada se poziva metoda over-ridden run ().

poništitisetName ( Naziv niza )

Izmijeni ime s ovom nitom da bi postalo usporedivo s imenom argumenta.

statička praznina

san ( dugačak milis ) baca Prekinuti / izuzetak
Usporava trenutačno izvršava nit
potrebna količina milisekundi.
statička prazninasan ( dugački milis, int nanos ) baca Prekinuta ekscepcija

To uzrokuje uspavanje trenutačno izvedene niti (prestanak izvođenja) za potrebnu količinu milisekundi kao i određenu količinu nanosekundi.

poništitipočetak()

Pokreće ove niti za pokretanje izvršenja; Java virtualni stroj poziva metodu pokretanja te niti.

statička prazninaprinos()

Pokreće predmet trenutno nit da nakratko pauzira i dopusti izvršavanje dodatnih niti.

statička nitcurrentThread ()

Vraća spominjanje trenutno izvršenog objekta niti.

Zaključak

  • Jednostavno za početak korištenja niti, izuzetno teško za shvatiti.
  • Dizajniranje klasa koje sadrže metode koje se mogu zaštititi nitima je izazovno.
  • Pročitajte: JavaDoc da biste dobili klasu java.lang.Thread

Preporučeni članak

Ovo je vodič za životni ciklus teme na Javi. Ovdje razgovaramo o tome što je nit? i različita stanja životnog ciklusa niti zajedno s stvaranjem niti u javi. Možete i proći naše druge predložene članke da biste saznali više -

  1. Okviri na Javi
  2. Zvjezdani uzorci na Javi
  3. Spajanje sortiranja u Javi
  4. Najbolji Java sastavljači
  5. Statička metoda u PHP-u

Kategorija: