logo

Thread.sleep() в Java с примери

Класът Java Thread предоставя двата варианта на метода sleep(). Първият приема само един аргумент, докато другият вариант приема два аргумента. Методът sleep() се използва за спиране на работата на нишка за определен период от време. Времето, до което нишката остава в състояние на заспиване, е известно като време на заспиване на нишката. След като времето за заспиване изтече, нишката започва своето изпълнение от мястото, където е тръгнала.

Синтаксис на метода sleep():

Следва синтаксисът на метода sleep().

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

Методът sleep() с един параметър е естественият метод, а внедряването на естествения метод се осъществява на друг език за програмиране. Другите методи, които имат двата параметъра, не са естественият метод. Тоест внедряването му се осъществява в Java. Можем да осъществим достъп до методите sleep() с помощта на класа Thread, тъй като сигнатурата на методите sleep() съдържа ключовата дума static. Родният, както и не-родният метод, хвърлят отметнато изключение. Следователно блокът try-catch или ключовата дума throws могат да работят тук.

Методът Thread.sleep() може да се използва с всяка нишка. Това означава, че всяка друга нишка или основната нишка може да извика метода sleep().

Параметри:

Следват параметрите, използвани в метода sleep().

mls: Времето в милисекунди се представя от параметъра mls. Продължителността, за която нишката ще заспи, се дава от метода sleep().

н: Той показва допълнителното време, до което програмистът или разработчикът иска нишката да бъде в спящо състояние. Диапазонът на n е от 0 до 999999.

Методът не връща нищо.

Важни моменти, които трябва да запомните относно метода Sleep().

Всеки път, когато методите Thread.sleep() се изпълнят, те винаги спират изпълнението на текущия поток.

Всеки път, когато друга нишка прекъсне, докато текущата нишка вече е в режим на заспиване, тогава се хвърля InterruptedException.

Ако системата, която изпълнява нишките, е заета, тогава действителното време на заспиване на нишката обикновено е повече в сравнение с времето, прекарано в аргументите. Въпреки това, ако системата, изпълняваща метода sleep(), има по-малко натоварване, тогава действителното време на заспиване на нишката е почти равно на времето, предадено в аргумента.

Пример за метода sleep() в Java: в персонализираната нишка

Следващият пример показва как може да се използва методът sleep() в персонализираната нишка.

Име на файл: 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++){>

Както добре знаете, че в даден момент се изпълнява само една нишка. Ако заспите една нишка за определеното време, планировчикът на нишки избира друга нишка и така нататък.

Пример за метода sleep() в Java: в главната нишка

Име на файл: 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;>

Пример за метода sleep() в Java: Когато времето за заспиване е -ive

Следващият пример хвърля изключението IllegalArguementException, когато времето за заспиване е отрицателно.

Име на файл: 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;>