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: Він показує додатковий час, до якого програміст або розробник хоче, щоб потік перебував у стані сну. Діапазон 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;>