thread sleep thread sleep method java with examples
V tomto výučbe sa budeme zaoberať metódou Thread Sleep () v prostredí Java. Uvidíme, ako metóda Thread.Sleep () funguje pomocou príkladov:
The java.lang.Thread.sleep (dlhé milis) method je metóda poskytovaná triedou Thread, ktorá uvedie aktuálne spustené vlákno do režimu spánku. Čas spánku určíme ako argument metódy spánku.
=> Tu si pozrite príručku Java Beginners Guide.
Čo sa dozviete:
Metóda Thread Sleep () v Jave
Trieda Java triedy Thread poskytuje dve varianty spánkovej metódy.
Ďalej je popísaný prototyp oboch variantov metódy sleep ().
# 1) Variant metódy spánku # 1
Prototyp: public static void sleep (long millis) throws InterruptedException
Parametre: millis => doba v milisekundách, po ktorú vlákno spí.
Návratová hodnota: neplatný
Hody:
- IllegalArgumentException => ak je millis záporné
- InterruptedException => ak akékoľvek iné vlákno preruší súčasné vlákno. Keď nastane táto výnimka, stav prerušenia vlákna sa vymaže.
Popis: Táto variácia metódy spánku spôsobí, že súčasné vlákno bude v režime spánku, alebo dočasne zastaví svoje vykonávanie na daný počet milisekúnd (uvedené v argumente metódy). Počas spánku však vlákno nestratí monitor ani nezamkne vlastníctvo.
# 2) Variant metódy spánku # 2
Prototyp: public static void sleep (long millis, int nanos) throws InterruptdException
Parametre:
zadarmo youtube na mp4 prevodník pre mac
- millis => doba v milisekundách, počas ktorej musí vlákno spať.
- nanos => ďalšie nanosekundy, počas ktorých môže vlákno spať. Rozsah je 0 - 999 999.
Návratová hodnota: neplatný
Hody:
- IllegalArgumentException => ak je hodnota millis záporná alebo hodnota nanos, ak je mimo rozsahu.
- InterruptedException => ak akékoľvek iné vlákno preruší súčasné vlákno. Keď dôjde k tejto výnimke, stav prerušenia vlákna sa vymaže.
Popis: Tento variant metódy spánku spôsobí, že vlákno ho vyvolá do režimu spánku alebo dočasne zastaví jeho vykonávanie na daný počet milisekúnd. (prvý argument volania metódy). Okrem toho tiež poskytoval počet nanosekúnd (druhý argument volania metódy) na spánok.
Upozorňujeme, že presnosť a presnosť zadaného času závisí od časovačov a plánovačov systému. Keď vlákno spí, vlastníctvo zámku alebo monitora sa nezmení.
Spracovanie vlákna. Metóda spánku
Kedykoľvek vlákno spí alebo je pozastavené, vykoná to plánovač. Metóda Thread.sleep () komunikuje s plánovačom vlákien tak, aby plánovač mohol spôsobiť, že aktuálne spustené vlákno sa zmení, aby počkalo na stav po dané obdobie.
Po uplynutí tohto zadaného času sa stav vlákna zmení na „spustiteľný“, aby mohol čakať na vykonanie CPU.
Trvanie toho, ako dlho vlákno spí, teda závisí od plánovača, a nie od metódy. Pretože je plánovač súčasťou operačného systému, architektúra OS hrá rolu aj pri zmenách stavu vlákna.
Teraz, keď sme podrobne videli metódu Thread.sleep (), mali by sme pri používaní tejto metódy pamätať na niektoré body.
Ukazovatele zahŕňajú:
# 1) Metóda Thread.sleep () vždy pozastaví vykonávanie aktuálneho vlákna.
#dva) Skutočné trvanie, počas ktorého vlákno spí, závisí od plánovačov a systémových časovačov.
Napríklad, pre veľmi zaneprázdnený systém môže byť čas spánku vlákna dlhší, ako je uvedené, zatiaľ čo pre systém, ktorý nie je taký vyťažený, môže byť viac alebo menej blízky zadanému času.
# 3) Keď niť spí, nestráca žiadne zámky ani monitory, ktoré získala pred spánkom.
# 4) Aktuálne vlákno, ktoré je v režime spánku, je možné prerušiť akýmkoľvek iným vláknom. V takom prípade sa vyvolá „InterruptedException“.
Thread.sleep Príklad v prostredí Java
Prejdime teraz k príkladu, ktorý demonštruje metódu spánku. Tu máme triedu vlákien, ktorá má metódu run (). V metóde run () nazývame „Thread.sleep (1000)“. Potom v hlavnej funkcii vytvoríme dve inštancie tohto vlákna, t. J. Dve vlákna. Potom začneme vlákna.
Na výstupe si všimneme, že keďže obe vlákna fungujú, vlákna sú naplánované jeden po druhom, tzn. Keď jeden spí, druhý beží.
Príklad:
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(); } }
Výkon:
sql skúška otázky a odpovede pdf
Keď sledujeme výstup, zistíme, že Thread_0 a Thread_1 sa pri vykonávaní striedajú.
Thread.sleep () s negatívnou hodnotou času spánku
Ďalej si ukážeme ďalší príklad metódy Thread.sleep (). Tu sme uvažovali o zvláštnom prípade negatívnej hodnoty doby spánku. Program je podobný vyššie uvedenému programu, ale poskytnutý čas spánku je -500.
Príklad:
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(); } }
Výkon:
Z výstupu vidíme, že metóda vyhodila „IllegalArgumentException“, pretože negatívna hodnota času spánku je neprijateľná.
často kladené otázky
Otázka č. 1) Ako funguje vlákno spánku v Jave?
Odpoveď: Keď sa vo vlákne zavolá režim spánku () so zadaným časom v milisekundách, vlákno zastaví svoje vykonávanie. Vzdá sa CPU. Takže počas doby, keď vlákno spí, môžu ostatné vlákna používať CPU.
Otázka 2) Čo je yield () a sleep () vo vlákne Java?
Odpoveď: Metóda vlákna sleep () spôsobí, že sa vlákno vzdá CPU a zastaví vykonávanie. Zatiaľ čo toto vlákno spí, ostatné vlákna získavajú procesor. Vykonáva to plánovač.
Metóda yield () tiež spôsobí, že sa vlákno pri volaní vzdá riadenia CPU, ale metóda sleep () vykazuje v porovnaní s yield () rozhodnejšie správanie.
Otázka č. 3) Ako zastavíte spánok vlákna Java?
Odpoveď: Zastavíme spanie vlákna Java pomocou metódy interrupt (). Akékoľvek vlákno, ktoré čaká alebo spí, je možné prerušiť vyvolaním metódy interrupt () triedy Thread.
Otázka č. 4) Môžeme zabiť vlákno v Jave?
Odpoveď: Nie, vlákno nie je v Jave zabité. Namiesto toho je vlákno zastavené v Jave. Vlákno je ukončené a potom sa môže elegantne vypnúť. Často používame volatilné logické pole, ktoré sa pravidelne kontroluje kvôli zmenám v hodnotách, aby sme mohli vlákno ukončiť.
ako otvoriť .bin
Otázka č. 5) Prečo je sleep () statická metóda?
Odpoveď: Pri volaní metódy sleep () na uspanie vlákna ju vždy voláme pomocou triedy Thread.
Napríklad , Thread.sleep (1000);
Vyššie uvedené volanie funguje v kontexte aktuálneho vlákna a uvedie aktuálne vlákno do režimu spánku. Metódu nikdy nevoláme pomocou konkrétnej inštancie vlákna. Metóda je teda statická.
Záver
V tomto tutoriáli sme diskutovali o metóde vlákien sleep () v Jave. Metóda sleep () spôsobí, že súčasné vlákno, ktoré sa vykonáva, zastaví svoje vykonávanie na zadané množstvo času, ktoré je poskytované ako argument metódy spánku.
Systémový plánovač pracuje s metódou spánku na prepnutie aktuálneho vlákna do stavu čakania. Zatiaľ čo vlákno spí, naďalej vlastní zámky alebo monitory, ktoré získalo. Keď metóde spánku odovzdáme zápornú hodnotu času spánku, hodí sa to „IllegalArgumentException“.
Keď metóde sleep () odovzdáme platnú hodnotu času spánku, ostatné vlákna sa uskutočnia, kým bude aktuálne vlákno spať.
=> Tu nájdete A-Z výučbových kurzov Java.
Odporúčané čítanie
- Multithreading v Jave - návod s príkladmi
- Multithreading v C ++ s príkladmi
- Synchronizovaná Java: Čo je synchronizácia vlákien v Jave
- Vlákna Java s metódami a životným cyklom
- Výukový program pre Java String Metódy reťazca Java s príkladmi
- Ako používať metódu Java toString?
- TreeMap In Java - návod s príkladmi Java TreeMap
- Výukový program JAVA pre začiatočníkov: viac ako 100 praktických výučbových programov Java Video