Introduzione
Il metodo Thread.sleep()
di Java può essere utilizzato per mettere in pausa l’esecuzione del thread corrente per un tempo specificato in millisecondi. Il valore dell’argomento per i millisecondi non può essere negativo. In caso contrario, viene generata un’eccezione IllegalArgumentException
.
sleep(long millis, int nanos)
è un altro metodo che può essere utilizzato per mettere in pausa l’esecuzione del thread corrente per un numero specificato di millisecondi e nanosecondi. I valori nanosecondi ammessi sono compresi tra 0
e 999999
.
In questo articolo, imparerai su Thread.sleep()
di Java.
Come funziona Thread.sleep
Thread.sleep()
interagisce con il pianificatore dei thread per mettere il thread corrente in uno stato di attesa per un periodo di tempo specificato. Una volta trascorso il tempo di attesa, lo stato del thread viene cambiato in uno stato eseguibile e attende la CPU per ulteriori esecuzioni. Il tempo effettivo in cui il thread corrente dorme dipende dal pianificatore dei thread che fa parte del sistema operativo.
Punti importanti su Java Thread.sleep
- Interrompe sempre l’esecuzione del thread corrente.
- Il tempo effettivo durante il quale il thread dorme prima di svegliarsi e iniziare l’esecuzione dipende dai timer e dai pianificatori di sistema. Per un sistema tranquillo, il tempo effettivo di sospensione è vicino al tempo di sospensione specificato, ma per un sistema occupato sarà leggermente più lungo.
Thread.sleep()
non perde monitor o blocca il thread corrente che ha acquisito.- Qualsiasi altro thread può interrompere il thread corrente durante il sonno, e in tali casi viene lanciata un’eccezione
InterruptedException
.
Esempio di Java Thread.sleep
Ecco un esempio di programma in cui Thread.sleep()
viene utilizzato per mettere in pausa l’esecuzione del thread principale per 2 secondi (2000 millisecondi):
package com.journaldev.threads;
public class ThreadSleep {
public static void main(String[] args) throws InterruptedException {
long start = System.currentTimeMillis();
Thread.sleep(2000);
System.out.println("Sleep time in ms = " + (System.currentTimeMillis() - start));
}
}
Innanzitutto, questo codice memorizza il tempo di sistema corrente in millisecondi. Poi dorme per 2000 millisecondi. Infine, questo codice stampa il nuovo tempo di sistema corrente meno il precedente tempo di sistema corrente:
OutputSleep time in ms = 2005
Nota che questa differenza non è esattamente di 2000 millisecondi. Questo è dovuto al funzionamento di Thread.sleep()
e all’implementazione specifica del pianificatore dei thread del sistema operativo.
Conclusione
In questo articolo, hai appreso su Thread.sleep()
di Java.
Continua il tuo apprendimento con altri tutorial Java.
Source:
https://www.digitalocean.com/community/tutorials/thread-sleep-java