thread sleep thread sleep method java with examples
V tej vadnici bomo razpravljali o metodi spanja niti () v Javi. Kako deluje metoda Thread.Sleep (), bomo videli s pomočjo primerov:
The java.lang.Thread.sleep (dolgi milis) metoda je metoda, ki jo nudi razred Thread, ki uspa trenutno delujočo nit. Kot argument metode spanja bomo določili čas spanja.
=> Tu si oglejte Vodnik za začetnike Java.
Kaj se boste naučili:
Metoda spanja niti () v Javi
Razred Thread Java ponuja dve različici načina spanja.
Prototip obeh različic metode sleep () je opisan spodaj.
# 1) Variant št. Metode spanja # 1
Prototip: javni statični prazninski spanec (dolgi milis) vrže InterruptedException
Parametri: milis => trajanje časa v milisekundah, za katerega nit spi.
Vrnjena vrednost: praznino
Meti:
- IllegalArgumentException => če je milijon negativen
- InterruptException => če katera koli nit prekine trenutno nit. Ko pride do te izjeme, se prekinjeno stanje niti odstrani.
Opis: Ta različica metode spanja povzroči, da trenutna nit preklopi v stanje pripravljenosti ali začasno ustavi njeno izvajanje za dano število milisekund (podana v argumentu metode). Vendar med spanjem nit ne izgubi monitorja ali zaklene lastništva.
# 2) Variant št. Metode spanja # 2
Prototip: javni statični prazen spanec (dolgi milis, int nanos) vrže InterruptdException
Parametri:
kaj je računalniški operacijski sistem
- milis => trajanje v milisekundah, ko mora nit spati.
- nanos => dodatne nanosekunde, za katere lahko nit spi. Razpon je 0 - 999999.
Vrnjena vrednost: praznino
Meti:
- IllegalArgumentException => če je vrednost milisa negativna ali vrednost nanos, če je zunaj obsega.
- InterruptedException => če katera koli druga nit prekine trenutno nit. Ko pride do te izjeme, se stanje niti prekine.
Opis: Ta različica metode spanja povzroči, da jo nit prikliče v stanje spanja ali začasno ustavi njeno izvajanje za dano število milisekund. (prvi argument v klicu metode). Poleg tega je zagotovil tudi število nanosekund (drugi argument v klicu metode) za spanje.
Upoštevajte, da sta natančnost in natančnost določenega časa odvisna od sistemskih časovnikov in načrtovalcev. Ko nit spi, se lastništvo ključavnice ali monitorja ne spremeni.
Metoda obdelave niti
Kadar koli nit spi ali je prekinjena, to opravi načrtovalec. Metoda Thread.sleep () komunicira z načrtovalnikom niti, tako da lahko načrtovalnik povzroči, da se trenutno izvajana nit spremeni, da čaka na stanje za določeno trajanje.
Ko se ta določen čas konča, se stanje niti spremeni v 'runnable', tako da lahko počaka, da CPU nadaljuje z izvajanjem.
Tako trajanje, kako dolgo nit spi, je odvisno od načrtovalca in ne od metode. Ker je razporejevalnik del operacijskega sistema, ima tudi arhitektura OS pomembno vlogo pri spremembah stanja niti.
Zdaj, ko smo podrobno videli metodo Thread.sleep (), bi morali med uporabo te metode upoštevati nekatere točke.
Kazalci vključujejo:
# 1) Metoda Thread.sleep () vedno zaustavi izvajanje trenutne niti.
#two) Dejansko trajanje, v katerem nit spi, je odvisno od načrtovalcev in sistemskih časovnikov.
Na primer za zelo zaseden sistem je lahko čas spanja niti daljši od določenega, medtem ko je za sistem, ki ni tako zaseden, morda bolj ali manj blizu določenega časa.
ponarejen e-poštni naslov, ki ga lahko uporabim
# 3) Medtem ko nit spi, ne izgubi nobenih ključavnic ali monitorjev, ki jih je pridobila pred spanjem.
# 4) Trenutna nit, ki je v stanju spanja, lahko prekine katera koli druga nit. V tem primeru se vrže “InterruptedException”.
Primer Thread.sleep v Javi
Pojdimo zdaj na primer, ki prikazuje način spanja. Tu imamo razred niti, ki ima metodo run (). V metodi run () imenujemo »Thread.sleep (1000)«. Nato v glavni funkciji ustvarimo dva primerka te niti, torej dve niti. Nato začnemo niti.
V izhodu opazimo, da ko se niti izvajata, so niti razporejene ena za drugo, tj. Ko ena spi, se izvaja druga.
Primer:
class SleepThread extends Thread { //run method for thread public void run() { for(int i=1;i<5;i++) { try { //call sleep method of thread Thread.sleep(1000); }catch(InterruptedException e){System.out.println(e);} //print current thread instance with loop variable System.out.println(Thread.currentThread().getName() + ' : ' + i); } } } class Main{ public static void main(String args[]) { //create two thread instances SleepThread thread_1 = new SleepThread(); SleepThread thread_2 = new SleepThread(); //start threads one by one thread_1.start(); thread_2.start(); } }
Izhod:
Ko opazujemo izhodne podatke, ugotovimo, da se Thread_0 in Thread_1 izmenično izvajata.
Thread.sleep () z negativno vrednostjo časa spanja
Nato predstavimo še en primer metode Thread.sleep (). Tu smo obravnavali poseben primer negativne vrednosti časa spanja. Program je podoben zgornjemu programu, vendar je predvideni čas spanja -500.
Primer:
class SleepThread extends Thread { public void run() { for(int i=1;i<5;i++) { try { //call sleep method with negative value of time Thread.sleep(-500); }catch(InterruptedException e){System.out.println(e);} System.out.println(i); } } } class Main{ public static void main(String args[]) { //create two thread instances SleepThread t1=new SleepThread(); SleepThread t2=new SleepThread(); //start the threads one by one t1.start(); t2.start(); } }
Izhod:
Iz izhoda lahko vidimo, da je metoda vrgla 'IllegalArgumentException', saj negativna vrednost časa spanja ni sprejemljiva.
Pogosto zastavljena vprašanja
V # 1) Kako deluje spanje niti v Javi?
Odgovor: Ko pokličete spanje () na nit z določeno količino časa v milisekundah, nit preneha izvajati. Odpove CPU. Tako lahko v času, ko nit spi, druge niti uporabljajo CPU.
najboljša aplikacija za upravljanje projektov za iphone
V # 2) Kaj sta yield () in sleep () v niti Java?
Odgovor: Metoda navoja sleep () povzroči, da se nit odreče CPU-ju in preneha izvajati. Medtem ko ta nit spi, druge niti pridobijo CPU. To naredi razporejevalnik.
Metoda yield () povzroči tudi, da se nit odpove nadzoru CPU, ko je poklicana, vendar metoda sleep () kaže bolj odločno vedenje v primerjavi z yield ().
V # 3) Kako ustaviti, da nit Java ne preide v stanje spanja?
Odgovor: Prekinitev niti Java ustavi z uporabo metode interrupt (). Vsako nit, ki čaka ali spi, lahko prekinete tako, da prikličete metodo interrupt () razreda Thread.
V # 4) Ali lahko v Java ubijemo nit?
Odgovor: Ne, nit ni umorjena v Javi. Namesto tega se nit ustavi v Javi. Nit se prekine in se nato lahko elegantno zaustavi. Pogosto uporabljamo hlapno logično polje, ki ga redno preverjamo glede kakršnih koli sprememb vrednosti, da lahko nit končamo.
V # 5) Zakaj je spanje () statična metoda?
Odgovor: Ko pokličemo metodo sleep () za uspavanje niti, jo vedno pokličemo z uporabo razreda Thread.
Na primer , Navoj.spanje (1000);
Zgornji klic deluje v kontekstu trenutne niti in preklopi trenutno nit. Metode nikoli ne pokličemo z uporabo določenega primerka niti. Tako je metoda statična.
Zaključek
V tej vadnici smo obravnavali metodo spanja () niti v Javi. Metoda spanja () povzroči, da trenutna nit, ki se izvaja, preneha izvajati za določen čas, ki je naveden kot argument metode spanja.
Sistemski načrtovalnik deluje z metodo spanja, da trenutni nit postavi v stanje čakanja. Medtem ko nit spi, ima še naprej ključavnice ali monitorje, ki jih je pridobila. Ko prenesemo negativno vrednost časa spanja na način spanja, vrže »IllegalArgumentException«.
Ko prenesemo veljavno vrednost časa spanja v metodo sleep (), se druge niti izvedejo, medtem ko trenutna nit spi.
=> Tukaj si oglejte A-Z vadnic za učenje Java.
Priporočeno branje
- Večnitnost v Javi - Vadnica s primeri
- Večnitnost v jeziku C ++ z primeri
- Java Synchronized: Kaj je sinhronizacija niti v Javi
- Java niti z metodami in življenjskim ciklom
- Vadnica za Java String | Nizovske metode Java s primeri
- Kako uporabiti metodo Java toString?
- TreeMap v Javi - Vadnica z primeri Java TreeMap
- JAVA Vadnica za začetnike: 100+ praktičnih Javnih video vadnic