thread sleep thread sleep method java with examples
U ovom vodiču razgovarat ćemo o metodi spavanja niti () na Javi. Vidjet ćemo kako Thread.Sleep () metoda funkcionira uz pomoć Primjera:
The java.lang.Thread.sleep (dugački milis) metoda je metoda koju pruža klasa Thread koja uspava trenutno izvodljivu nit. Navest ćemo vrijeme spavanja kao argument metode spavanja.
=> Ovdje pogledajte Vodič za početnike za Java.
Što ćete naučiti:
Metoda spavanja niti () u Javi
Klasa Thread Java nudi dvije varijante metode mirovanja.
Prototip obje varijante metode sleep () opisan je u nastavku.
# 1) Varijanta načina spavanja # 1
Prototip: javno statično void sleep (long milis) baca InterruptedException
Parametri: milis => trajanje vremena u milisekundama za koje konac spava.
Povratna vrijednost: poništiti
Baca:
- IllegalArgumentException => ako je milis negativan
- InterruptedException => ako bilo koja druga nit prekida trenutnu nit. Kad se dogodi ova iznimka, prekida se status niti.
Opis: Ova varijacija metode mirovanja dovodi trenutnu nit u stanje mirovanja ili privremeno zaustavlja njezino izvršavanje za zadani broj milisekundi (navedeno u argumentu metode). Međutim, dok spava, nit ne gubi monitor ili zaključava vlasništvo.
# 2) Varijanta načina spavanja # 2
Prototip: javno statično void sleep (long milis, int nanos) baca InterruptdException
Parametri:
besplatni pretvarač za youtube u mp4 za mac
- milis => trajanje u milisekundama za koje nit mora prespavati.
- nanos => dodatne nanosekunde tijekom kojih nit može spavati. Raspon je 0 - 999999.
Povratna vrijednost: poništiti
Baca:
- IllegalArgumentException => ako je milis vrijednost negativna ili vrijednost nanos ako je izvan dosega.
- InterruptedException => ako bilo koja druga nit prekine trenutnu nit. Prekinuti status niti briše se kad se dogodi ova iznimka.
Opis: Ova varijanta metode mirovanja uzrokuje da je nit pozove u stanje mirovanja ili privremeno zaustavi njezino izvršavanje za zadani broj milisekundi. (prvi argument u pozivu metode). Osim toga, pružao je i broj nanosekundi (drugi argument u pozivu metode) za spavanje.
Imajte na umu da točnost i preciznost navedenog vremena ovisi o sistemskim tajmerima i planerima. Kada nit spava, vlasništvo nad bravom ili monitorom se ne mijenja.
Metoda rada niti. Spavanje
Kad god nit spava ili je suspendirana, to čini planer. Metoda Thread.sleep () komunicira s planerom niti tako da planer može uzrokovati promjenu trenutno pokrenute niti da čeka stanje određeno vrijeme.
Nakon što ovo određeno vrijeme završi, stanje niti se mijenja u ‘pokretno’ tako da može pričekati da CPU nastavi s izvršenjem.
Stoga trajanje koliko dugo nit spava ovisi o planeru, a ne o metodi. Kako je planer dio operativnog sustava, arhitektura OS također igra ulogu u promjenama stanja niti.
Sad kad smo detaljno vidjeli metodu Thread.sleep (), trebali bismo imati na umu neke točke tijekom korištenja ove metode.
Pokazivači uključuju:
# 1) Metoda Thread.sleep () uvijek zaustavlja izvršavanje trenutne niti.
#dva) Stvarno trajanje tijekom kojeg nit spava ovisi o planerima i tajmerima sustava.
Na primjer, za vrlo zauzet sustav, vrijeme mirovanja niti može biti duže od navedenog, dok za sustav koji nije toliko zauzet može biti manje-više blizu određenog vremena.
# 3) Dok konac spava, ne gubi brave ili monitore koje je stekao prije spavanja.
# 4) Trenutna nit koja je u stanju mirovanja može biti prekinuta bilo kojom drugom niti. U ovom se slučaju baca 'InterruptedException'.
ip adresa tracker softver besplatno preuzeti
Primjer Thread.sleep u Javi
Prijeđimo sada na primjer koji pokazuje metodu spavanja. Ovdje imamo klasu niti koja ima metodu run (). U metodi run () nazivamo 'Thread.sleep (1000)'. Zatim u glavnoj funkciji kreiramo dvije instance ove niti, tj. Dvije niti. Zatim započinjemo niti.
U izlazu primjećujemo da kako su obje niti pokrenute, niti su raspoređene jedna za drugom, tj. Kada jedna spava, druga je pokrenuta.
Primjer:
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(); } }
Izlaz:
Kada promatramo izlaz, nalazimo da se Thread_0 i Thread_1 izmjenjuju u izvršavanju.
Thread.sleep () s negativnom vrijednošću vremena mirovanja
Dalje, pokažimo još jedan primjer metode Thread.sleep (). Ovdje smo razmotrili poseban slučaj negativne vrijednosti vremena spavanja. Program je sličan gore navedenom programu, ali predviđeno vrijeme mirovanja je -500.
Primjer:
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(); } }
Izlaz:
Iz rezultata možemo vidjeti da je metoda bacila 'IllegalArgumentException' jer negativna vrijednost vremena spavanja nije prihvatljiva.
Često postavljana pitanja
P # 1) Kako funkcionira spavanje niti u Javi?
Odgovor: Kada se sleep () pozove na niti s navedenom količinom vremena u milisekundama, nit prestaje sa svojim izvršavanjem. Odustaje od CPU-a. Dakle, tijekom trajanja kada nit spava, ostale niti mogu koristiti CPU.
P # 2) Što je yield () i sleep () u niti Java?
Odgovor: Metoda navoja sleep () uzrokuje da se nit odrekne CPU-a i zaustavi izvršavanje. Dok ova nit spava, ostale niti dobivaju CPU. To radi rokovnik.
pitanja i odgovori na intervjuu za rješavanje problema s mrežom pdf
Metoda yield () također uzrokuje da nit odustane od CPU kontrole kada je pozvana, ali metoda sleep () pokazuje odlučnije ponašanje u usporedbi s yield ().
P # 3) Kako zaustaviti prelazak Java niti u stanje mirovanja?
Odgovor: Zaustavljamo Java niti da spava metodom interrupt (). Bilo koja nit koja čeka ili spava može se prekinuti pozivanjem metode interrupt () klase Thread.
P # 4) Možemo li ubiti nit u Javi?
Odgovor: Ne, nit nije ubijena u Javi. Umjesto toga, nit je zaustavljena u Javi. Nit je prekinut, a zatim se može elegantno isključiti. Često koristimo hlapljivo logičko polje koje se povremeno provjerava ima li promjena u vrijednostima, kako bismo mogli prekinuti nit.
P # 5) Zašto je spavanje () statična metoda?
Odgovor: Kada pozivamo metodu sleep () za uspavljivanje niti, uvijek je zovemo pomoću klase Thread.
Na primjer , Navoj.spavanje (1000);
Gornji poziv djeluje u kontekstu trenutne niti i stavlja trenutnu nit u stanje mirovanja. Metodu nikada ne pozivamo pomoću određene instance niti. Stoga je metoda statična.
Zaključak
U ovom uputstvu raspravljali smo o metodi sleep () niti u Javi. Metoda spavanja () uzrokuje da trenutna nit koja se izvršava prestane sa svojim izvršavanjem na određeno vrijeme koje je navedeno kao argument metode spavanja.
Planer sustava radi s metodom spavanja kako bi trenutnu nit stavio u stanje čekanja. Dok konac spava, i dalje posjeduje brave ili monitore koje je stekao. Kada negativnu vrijednost vremena spavanja prenesemo na metodu spavanja, ona baca ‘IllegalArgumentException’.
Kada proslijedimo valjanu vrijednost vremena spavanja metodi sleep (), ostale će se niti izvršavati dok trenutna nit spava.
=> Ovdje pogledajte kako biste ovdje vidjeli A-Z Java tutorijala za obuku.
Preporučena literatura
- Multithreading u Javi - Vodič s primjerima
- Višenitnost u jeziku C ++ s primjerima
- Java Synchronized: Što je sinkronizacija niti u Javi
- Java niti s metodama i životnim ciklusom
- Java String Vodič | Metode Java niza s primjerima
- Kako koristiti Java toString metodu?
- TreeMap u Javi - Vodič uz primjere Java TreeMap
- JAVA Tutorial za početnike: 100+ praktičnih Java Video tutorijala