Klasa wątków to klasa będąca w zasadzie wątkiem wykonywania programów. Jest obecny w pakiecie Java.lang. Klasa wątku zawiera Spać() metoda. W klasie Thread znajdują się dwie przeciążone metody metody Sleep(), jedna z jednym argumentem, a druga z dwoma argumentami. Metoda Sleep() służy do zatrzymywania wykonywania bieżącego wątku (niezależnie od tego, który z nich jest wykonywany w systemie) na określony czas, a po upływie tego czasu wykonywany wcześniej wątek rozpoczyna się od nowa.
bash, pętla while
Ważny punkt dotyczący metody Thread.sleep():
- Metoda Ilekroć funkcja Thread.sleep() ma zostać wykonana, zawsze wstrzymuje wykonywanie bieżącego wątku.
- Jeśli jakikolwiek inny wątek przerwie działanie, gdy wątek będzie uśpiony, zostanie zgłoszony wyjątek InterruptedException.
- Jeśli system jest zajęty, to rzeczywisty czas uśpienia wątku będzie większy w porównaniu do czasu upływającego podczas wywoływania metody uśpienia, a jeśli system jest mniej obciążony, to rzeczywisty czas uśpienia wątku będzie zbliżony do czasu upływającego podczas wywoływania metody uśpienia wywołanie metody Sleep().
Składnia metody Sleep().
Istnieją 4 odmiany metody Sleep() w wątku Java. To są:
1. public static void sleep(long millis)throws InterruptedException 2. public static void sleep(long millis)throws IllegalArguementException 3. public static void sleep(long millis, int nanos)throws InterruptedException 4. public static void sleep(long millis, int nanos)throws IllegalArguementException>
Parametry przekazywane w metodzie Thread.Sleep().
- millis: Czas w milisekundach, przez który wątek będzie uśpiony. nanos: Jest to dodatkowy czas w nanosekundach, przez który wątek ma być uśpiony. Zakres mieści się w zakresie od 0 do 999999.
Zwracany typ metody Sleep(): Nie zwraca żadnej wartości, tzn. typ zwracany przez funkcję uśpienia jest nieważny.
Metoda uśpienia z jednym parametrem jest metodą natywną, tj. implementacja tej metody odbywa się w innym języku programowania, natomiast druga metoda z dwoma parametrami nie jest metodą natywną, tj. jej implementacja odbywa się w Javie. Obie metody uśpienia są statyczne, tzn. dostęp do nich możemy uzyskać za pomocą klasy Thread. Obie metody zgłaszają sprawdzony wyjątek, tzn. możemy obsłużyć wyjątek albo za pomocą słowa kluczowego rzucanego, albo za pomocą bloku try i catch.
Metodę Thread.Sleep() możemy zastosować dla dowolnego wątku, czyli możemy to zrobić z wątkiem głównym lub dowolnym innym wątkiem, który utworzymy programowo.
1. Używanie metody Thread.Sleep() dla głównego wątku
Jawa
// Java Program for sleeping the main thread.> import> java.io.*;> import> java.lang.Thread;> class> GFG {> >public> static> void> main(String[] args)> >{> >// we can also use throws keyword followed by> >// exception name for throwing the exception> > >try> {> >for> (>int> i =>0>; i <>5>; i++) {> > >// it will sleep the main thread for 1 sec> >// ,each time the for loop runs> >Thread.sleep(>1000>);> > >// printing the value of the variable> >System.out.println(i);> >}> >}> >catch> (Exception e) {> > >// catching the exception> >System.out.println(e);> >}> >}> }> |
>
jaki jest rozmiar ekranu mojego komputera
>Wyjście
0 1 2 3 4>
2. Używanie metody Thread.Sleep() dla wątku niestandardowego
Jawa
// Java Program for sleeping the custom thread.> import> java.io.*;> import> java.lang.Thread;> class> GFG>extends> Thread {> >public> void> run()> >{> >// thread 0> >// we can also use throws keyword followed by> >// exception name for throwing the exception> >try> {> >for> (>int> i =>0>; i <>5>; i++) {> > >// it will sleep the main thread for 1 sec> >// ,each time the for loop runs> >Thread.sleep(>1000>);> > >// This Thread.sleep() method will sleep the> >// thread 0.> >// printing the value of the variable> >System.out.println(i);> >}> >}> >catch> (Exception e) {> > >// catching the exception> >System.out.println(e);> >}> >}> >public> static> void> main(String[] args)> >{> >// main thread> >GFG obj =>new> GFG();> >obj.start();> >}> }> |
>
>Wyjście
ciąg Java zawiera
0 1 2 3 4>
3. Wyjątek IllegalArgumentException, gdy czas snu jest ujemny
Jawa
// Java Program for showing how exception can occur if we> // pass the negative timeout value.> import> java.io.*;> import> java.lang.Thread;> class> GFG {> >public> static> void> main(String[] args)> >{> >// we can also use throws keyword followed by> >// exception name for throwing the exception> > >try> {> >for> (>int> i =>0>; i <>5>; i++) {> > >// this will throw the> >// IllegalArgumentException> >Thread.sleep(->100>);> > >// printing the value of the variable> >System.out.println(i);> >}> >}> >catch> (Exception e) {> > >// catching the exception> >System.out.println(e);> >}> >}> }> |
>
>Wyjście
java.lang.IllegalArgumentException: timeout value is negative>