logo

Thread.sleep() v jazyku Java s príkladmi

Trieda Java Thread poskytuje dva varianty metódy sleep(). Prvý variant akceptuje iba argumenty, zatiaľ čo druhý variant akceptuje dva argumenty. Metóda sleep() sa používa na zastavenie činnosti vlákna na určitý čas. Čas, do ktorého vlákno zostáva v režime spánku, sa nazýva čas spánku vlákna. Po uplynutí času spánku vlákno spustí svoje vykonávanie od miesta, kde skončilo.

Syntax metódy sleep():

Nasleduje syntax metódy sleep().

chyba: nepodarilo sa nájsť alebo načítať hlavnú triedu
 public static void sleep(long mls) throws InterruptedException public static void sleep(long mls, int n) throws InterruptedException 

Metóda sleep() s parametrom one je natívna metóda a implementácia natívnej metódy sa vykonáva v inom programovacom jazyku. Ostatné metódy s týmito dvoma parametrami nie sú natívnou metódou. To znamená, že jeho implementácia sa vykonáva v jazyku Java. K metódam sleep() môžeme pristupovať pomocou triedy Thread, keďže signatúra metód sleep() obsahuje kľúčové slovo static. Natívna, ako aj nenatívna metóda vyhodia zaškrtnutú výnimku. Preto tu môže fungovať buď blok try-catch alebo kľúčové slovo throws.

Metódu Thread.sleep() možno použiť s ľubovoľným vláknom. Znamená to, že akékoľvek iné vlákno alebo hlavné vlákno môže vyvolať metódu sleep().

Parametre:

Nasledujú parametre používané v metóde sleep().

mls: Čas v milisekundách predstavuje parameter mls. Trvanie, počas ktorého bude vlákno spať, je dané metódou sleep().

n: Zobrazuje dodatočný čas, do ktorého programátor alebo vývojár chce, aby vlákno bolo v režime spánku. Rozsah n je od 0 do 999999.

Metóda nič nevracia.

Dôležité body o metóde spánku () na zapamätanie

Kedykoľvek sa vykoná metóda Thread.sleep(), vždy zastaví vykonávanie aktuálneho vlákna.

cdr plná forma

Vždy, keď iné vlákno preruší, zatiaľ čo aktuálne vlákno je už v režime spánku, vyvolá sa výnimka InterruptedException.

Ak je systém, ktorý vlákna vykonáva, zaneprázdnený, skutočný čas spánku vlákna je vo všeobecnosti dlhší v porovnaní s časom, ktorý uplynul v argumentoch. Ak má však systém vykonávajúci metódu sleep() menšiu záťaž, potom sa skutočný čas spánku vlákna takmer rovná času, ktorý uplynul v argumente.

Príklad metódy sleep() v jazyku Java: vo vlastnom vlákne

Nasledujúci príklad ukazuje, ako možno použiť metódu sleep() vo vlastnom vlákne.

Názov súboru: TestSleepMethod1.java

 class TestSleepMethod1 extends Thread{ public void run(){ for(int i=1;i<5;i++){ 500 the thread will sleep for milli seconds try{thread.sleep(500);}catch(interruptedexception e){system.out.println(e);} system.out.println(i); } public static void main(string args[]){ testsleepmethod1 t1="new" testsleepmethod1(); t2="new" t1.start(); t2.start(); < pre> <p> <strong>Output:</strong> </p> <pre> 1 1 2 2 3 3 4 4 </pre> <p>As you know well that at a time only one thread is executed. If you sleep a thread for the specified time, the thread scheduler picks up another thread and so on.</p> <h3>Example of the sleep() Method in Java : on the main thread</h3> <p> <strong>FileName:</strong> TestSleepMethod2.java</p> <pre> // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod2 { // main method public static void main(String argvs[]) { try { for (int j = 0; j <5; 1 1000 j++) { the main thread sleeps for milliseconds, which is sec whenever loop runs thread.sleep(1000); displaying value of variable system.out.println(j); } catch (exception expn) catching exception system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> 0 1 2 3 4 </pre> <h3>Example of the sleep() Method in Java: When the sleeping time is -ive</h3> <p>The following example throws the exception IllegalArguementException when the time for sleeping is negative.</p> <p> <strong>FileName:</strong> TestSleepMethod3.java</p> <pre> // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod3 { // main method public static void main(String argvs[]) { // we can also use throws keyword followed by // exception name for throwing the exception try { for (int j = 0; j <5; j++) { it throws the exception illegalargumentexception as time is -ive which -100 thread.sleep(-100); displaying variable's value system.out.println(j); } catch (exception expn) iscaught here system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> java.lang.IllegalArgumentException: timeout value is negative </pre> <hr></5;></pre></5;></pre></5;i++){>

Ako dobre viete, súčasne sa vykonáva iba jedno vlákno. Ak uspíte vlákno na určený čas, plánovač vlákien vyberie ďalšie vlákno a tak ďalej.

Príklad metódy spánku() v jazyku Java: v hlavnom vlákne

Názov súboru: TestSleepMethod2.java

 // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod2 { // main method public static void main(String argvs[]) { try { for (int j = 0; j <5; 1 1000 j++) { the main thread sleeps for milliseconds, which is sec whenever loop runs thread.sleep(1000); displaying value of variable system.out.println(j); } catch (exception expn) catching exception system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> 0 1 2 3 4 </pre> <h3>Example of the sleep() Method in Java: When the sleeping time is -ive</h3> <p>The following example throws the exception IllegalArguementException when the time for sleeping is negative.</p> <p> <strong>FileName:</strong> TestSleepMethod3.java</p> <pre> // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod3 { // main method public static void main(String argvs[]) { // we can also use throws keyword followed by // exception name for throwing the exception try { for (int j = 0; j <5; j++) { it throws the exception illegalargumentexception as time is -ive which -100 thread.sleep(-100); displaying variable\'s value system.out.println(j); } catch (exception expn) iscaught here system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> java.lang.IllegalArgumentException: timeout value is negative </pre> <hr></5;></pre></5;>

Príklad metódy spánku() v jazyku Java: Keď je čas spánku -ive

Nasledujúci príklad vyvolá výnimku IllegalArguementException, keď je čas spánku záporný.

Názov súboru: TestSleepMethod3.java

 // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod3 { // main method public static void main(String argvs[]) { // we can also use throws keyword followed by // exception name for throwing the exception try { for (int j = 0; j <5; j++) { it throws the exception illegalargumentexception as time is -ive which -100 thread.sleep(-100); displaying variable\'s value system.out.println(j); } catch (exception expn) iscaught here system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> java.lang.IllegalArgumentException: timeout value is negative </pre> <hr></5;>