Thread Class este o clasă care este practic un fir de execuție a programelor. Este prezent în pachetul Java.lang. Clasa de fire conține Dormi() metodă. Există două metode supraîncărcate ale metodei Sleep() prezente în Thread Class, una cu un argument și alta cu două argumente. Metoda sleep() este folosită pentru a opri execuția firului de execuție curent (oricare ar putea fi executat în sistem) pentru o anumită durată de timp și după ce durata respectivă trece, firul care se execută mai devreme începe să se execute din nou.
Punct important referitor la metoda Thread.sleep():
- Metodă Ori de câte ori Thread.sleep() funcționează pentru a se executa, întotdeauna întrerupe execuția curentă a firului de execuție.
- Dacă orice alt fir se întrerupe atunci când firul este adormit, atunci va fi lansată InterruptedException.
- Dacă sistemul este ocupat, atunci timpul real în care se va opri firul de execuție va fi mai mare în comparație cu cel trecut în timpul apelării metodei de repaus și dacă sistemul are mai puțină sarcină, atunci timpul real de repaus al firului de execuție va fi aproape de cel trecut în timp ce apelarea metodei sleep().
Sintaxa metodei Sleep().
Există 4 variante ale metodei sleep() în Java Thread. Acestea sunt:
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>
Parametrii trecuți în metoda Thread.Sleep().
- millis: Durata de timp în milisecunde pentru care firul de execuție va dormi nanos: Acesta este timpul suplimentar în nanosecunde pentru care dorim ca firul de execuție să intre în somn. Acesta variază de la 0 la 999999.
Tipul de returnare a metodei Sleep(): Nu returnează nicio valoare, adică tipul de returnare al funcției de somn este nul.
Metoda sleep cu un parametru este o metodă nativă, adică implementarea acestei metode se face într-un alt limbaj de programare iar cealaltă metodă cu doi parametri nu este o metodă nativă, adică implementarea ei se face în Java. Ambele metode de somn sunt statice, adică le putem accesa folosind clasa Thread. Ambele metode aruncă o excepție bifată, adică putem gestiona excepția fie folosind cuvântul cheie throws, fie utilizând blocul try and catch.
Putem folosi metoda Thread.Sleep() pentru orice fir, adică o putem face cu firul principal sau cu orice alt fir pe care îl facem programatic.
1. Folosind metoda Thread.Sleep() pentru firul principal
Java
dependență parțială
// 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);> >}> >}> }> |
>
>Ieșire
0 1 2 3 4>
2. Folosind metoda Thread.Sleep() pentru thread personalizat
Java
alfabet ca numere
// 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();> >}> }> |
>
>Ieșire
0 1 2 3 4>
3. IllegalArguementException când timpul de somn este negativ
Java
cel mai frumos zâmbet din lume
// 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);> >}> >}> }> |
>
>Ieșire
java.lang.IllegalArgumentException: timeout value is negative>