Thread Class è una classe che è fondamentalmente un thread di esecuzione dei programmi. È presente nel pacchetto Java.lang. La classe Thread contiene il file Sonno() metodo. Esistono due metodi di sovraccarico del metodo Sleep() presenti nella classe Thread, uno con un argomento e un altro con due argomenti. Il metodo sleep() viene utilizzato per interrompere l'esecuzione del thread corrente (qualunque sia in esecuzione nel sistema) per una durata di tempo specifica e, trascorso tale periodo, il thread in esecuzione in precedenza inizia di nuovo a essere eseguito.
Punto importante relativo al metodo Thread.sleep():
- Metodo Ogni volta che la funzione Thread.sleep() deve essere eseguita, mette sempre in pausa l'esecuzione del thread corrente.
- Se qualsiasi altro thread si interrompe mentre il thread è inattivo, verrà lanciata l'InterruptedException.
- Se il sistema è occupato, il tempo effettivo di sospensione del thread sarà maggiore rispetto a quello trascorso durante la chiamata al metodo sleep e se il sistema ha meno carico, il tempo di sospensione effettivo del thread sarà vicino a quello trascorso mentre chiamando il metodo sleep().
Sintassi del metodo Sleep()
Esistono 4 varianti del metodo sleep() in Java Thread. Questi sono:
istanza di in Java
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>
Parametri passati nel metodo Thread.Sleep()
- millis: durata del tempo in millisecondi durante il quale il thread dormirà nanos: questo è il tempo aggiuntivo in nanosecondi per il quale vogliamo che il thread dorma. Varia da 0 a 999999.
Tipo restituito del metodo Sleep(): Non restituisce alcun valore, ovvero il tipo di ritorno della funzione sleep è void.
Il metodo sleep con un parametro è un metodo nativo, cioè l'implementazione di questo metodo avviene in un altro linguaggio di programmazione e l'altro metodo con due parametri non è un metodo nativo, cioè la sua implementazione avviene in Java. Entrambi i metodi sleep sono statici, ovvero possiamo accedervi utilizzando la classe Thread. Entrambi i metodi lanciano un'eccezione controllata, ovvero possiamo gestire l'eccezione utilizzando la parola chiave Throws o utilizzando il blocco try and catch.
Possiamo utilizzare il metodo Thread.Sleep() per qualsiasi thread, ovvero possiamo farlo con il thread principale o qualsiasi altro thread creato a livello di codice.
1. Utilizzo del metodo Thread.Sleep() per il thread principale
Giava
// 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);> >}> >}> }> |
>
>Produzione
stringa di formato java
0 1 2 3 4>
2. Utilizzo del metodo Thread.Sleep() per il thread personalizzato
Giava
il mio flicker
// 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();> >}> }> |
>
>Produzione
0 1 2 3 4>
3. IllegalArguementException quando il tempo di sonno è negativo
Giava
ordinamento di fusione
// 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);> >}> >}> }> |
>
>Produzione
java.lang.IllegalArgumentException: timeout value is negative>