logo

Thread.sleep() v Javě s příklady

Třída Java Thread poskytuje dvě varianty metody sleep(). První z nich přijímá pouze argumenty, zatímco druhá varianta přijímá dva argumenty. Metoda sleep() se používá k zastavení činnosti vlákna na danou dobu. Doba, po kterou vlákno zůstává ve stavu spánku, se nazývá doba spánku vlákna. Po uplynutí doby spánku vlákno zahájí své provádění od místa, kde skončilo.

Syntaxe metody sleep():

Následuje syntaxe metody sleep().

 public static void sleep(long mls) throws InterruptedException public static void sleep(long mls, int n) throws InterruptedException 

Metoda sleep() s parametrem one je nativní metodou a implementace nativní metody se provádí v jiném programovacím jazyce. Ostatní metody, které mají dva parametry, nejsou nativní metodou. To znamená, že jeho implementace je provedena v Javě. K metodám sleep() můžeme přistupovat pomocí třídy Thread, protože signatura metod sleep() obsahuje klíčové slovo static. Nativní, stejně jako nenativní metoda, vyvolá zaškrtnutou výjimku. Zde tedy může fungovat buď blok try-catch, nebo klíčové slovo throws.

Metodu Thread.sleep() lze použít s jakýmkoli vláknem. Znamená to, že jakékoli jiné vlákno nebo hlavní vlákno může vyvolat metodu sleep().

Parametry:

Následují parametry používané v metodě sleep().

mls: Čas v milisekundách je reprezentován parametrem mls. Doba, po kterou bude vlákno spát, je dána metodou sleep().

n: Zobrazuje dodatečný čas, po který programátor nebo vývojář chce, aby vlákno bylo ve stavu spánku. Rozsah n je od 0 do 999999.

Metoda nic nevrací.

Důležité body k zapamatování o metodě Sleep().

Kdykoli se spustí metoda Thread.sleep(), vždy se zastaví provádění aktuálního vlákna.

Kdykoli jiné vlákno provede přerušení, zatímco aktuální vlákno je již v režimu spánku, je vyvolána výjimka InterruptedException.

Pokud je systém, který spouští vlákna, zaneprázdněn, pak je skutečná doba spánku vlákna obecně delší ve srovnání s časem, který uplynul v argumentech. Pokud má však systém spouštějící metodu sleep() menší zátěž, pak se skutečná doba spánku vlákna téměř rovná době, která uplynula v argumentu.

Příklad metody sleep() v Javě: ve vlastním vláknu

Následující příklad ukazuje, jak lze použít metodu sleep() ve vlastním vláknu.

Název souboru: 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++){>

Jak dobře víte, že je spuštěno pouze jedno vlákno. Pokud vlákno uspíte po určenou dobu, plánovač vláken zachytí další vlákno a tak dále.

přepínač java programování

Příklad metody sleep() v Javě: v hlavním vlákně

Název souboru: 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;>

Příklad metody sleep() v Javě: Když je doba spánku -ive

Následující příklad vyvolá výjimku IllegalArguementException, když je čas spánku záporný.

Název souboru: 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;>