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 podataka | Nazivi metoda navoja |
Niz |
getName () Vratite ime ove niti |
int | dobiti prioritet ()
Vraća prioritet niti |
boolean | živ je()
Ispitivanja je li ova nit još uvijek pokrenuta |
poništiti | pridružiti()
Čeka da ova nit umre (prekine) |
poništiti | trč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štiti | setName ( 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 praznina | san ( 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štiti | početak()
Pokreće ove niti za pokretanje izvršenja; Java virtualni stroj poziva metodu pokretanja te niti. |
statička praznina | prinos()
Pokreće predmet trenutno nit da nakratko pauzira i dopusti izvršavanje dodatnih niti. |
statička nit | currentThread ()
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 -
- Okviri na Javi
- Zvjezdani uzorci na Javi
- Spajanje sortiranja u Javi
- Najbolji Java sastavljači
- Statička metoda u PHP-u