logo

Thread.sleep() w Javie z przykładami

Klasa Java Thread udostępnia dwa warianty metody Sleep(). Pierwszy przyjmuje tylko argumenty, natomiast drugi wariant przyjmuje dwa argumenty. Metoda Sleep() służy do wstrzymywania działania wątku na określony czas. Czas, przez który nić pozostaje w stanie uśpienia, nazywany jest czasem uśpienia wątku. Po upływie czasu uśpienia wątek rozpoczyna wykonywanie od miejsca, w którym opuścił.

Składnia metody Sleep():

Poniżej znajduje się składnia metody Sleep().

vlc, aby pobrać YouTube
 public static void sleep(long mls) throws InterruptedException public static void sleep(long mls, int n) throws InterruptedException 

Metoda Sleep() z jednym parametrem jest metodą natywną, a implementacja metody natywnej jest realizowana w innym języku programowania. Pozostałe metody posiadające te dwa parametry nie są metodami natywnymi. Oznacza to, że jego implementacja odbywa się w Javie. Dostęp do metod Sleep() możemy uzyskać za pomocą klasy Thread, ponieważ sygnatura metod Sleep() zawiera słowo kluczowe static. Metoda natywna i nienatywna zgłaszają sprawdzony wyjątek. Dlatego może tu działać zarówno blok try-catch, jak i słowo kluczowe rzuca.

Metody Thread.sleep() można używać z dowolnym wątkiem. Oznacza to, że każdy inny wątek lub wątek główny może wywołać metodę Sleep().

Parametry:

Poniżej znajdują się parametry używane w metodzie Sleep().

mls: Czas w milisekundach jest reprezentowany przez parametr mls. Czas, przez który wątek będzie uśpiony, określa metoda Sleep().

N: Pokazuje dodatkowy czas, przez który programista lub deweloper chce, aby wątek był w stanie uśpienia. Zakres n wynosi od 0 do 999999.

Metoda nic nie zwraca.

Ważne uwagi dotyczące metody Sleep().

Każde wykonanie metody Thread.sleep() zawsze powoduje zatrzymanie wykonywania bieżącego wątku.

jaki jest rozmiar ekranu mojego monitora

Za każdym razem, gdy inny wątek przerwie działanie, podczas gdy bieżący wątek jest już w trybie uśpienia, zgłaszany jest wyjątek InterruptedException.

Jeśli system wykonujący wątki jest zajęty, rzeczywisty czas uśpienia wątku jest zazwyczaj dłuższy w porównaniu z czasem przekazywanym w argumentach. Jeśli jednak system wykonujący metodę Sleep() ma mniejsze obciążenie, to rzeczywisty czas uśpienia wątku jest prawie równy czasowi podanemu w argumencie.

Przykład metody Sleep() w Javie: w wątku niestandardowym

Poniższy przykład pokazuje, jak można użyć metody Sleep() w wątku niestandardowym.

Nazwa pliku: 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 dobrze wiesz, że jednocześnie wykonywany jest tylko jeden wątek. Jeśli uśpisz wątek przez określony czas, program planujący wątki pobierze inny wątek i tak dalej.

Przykład metody Sleep() w Javie: w głównym wątku

Nazwa pliku: 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;>

Przykład metody Sleep() w Javie: Gdy czas uśpienia wynosi -ive

Poniższy przykład zgłasza wyjątek IllegalArgumentException, gdy czas uśpienia jest ujemny.

Nazwa pliku: 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;>