thread sleep thread sleep method java with examples
In questo tutorial, discuteremo del metodo Thread Sleep () in Java. Vedremo come funziona il metodo Thread.Sleep () con l'aiuto di Esempi:
Il java.lang.Thread.sleep (long millis) metodo è il metodo fornito dalla classe Thread che mette in sospensione il thread attualmente in esecuzione. Specificheremo il tempo di sospensione come argomento del metodo sleep.
=> Dai un'occhiata alla guida per principianti di Java qui.
Cosa imparerai:
Metodo Thread Sleep () in Java
La classe Thread di Java fornisce due varianti del metodo sleep.
Di seguito è descritto il prototipo di entrambe le varianti del metodo sleep ().
# 1) Variante del metodo del sonno # 1
Prototipo: public static void sleep (long millis) genera InterructedException
Parametri: millis => la durata del tempo in millisecondi per cui il thread dorme.
Valore di ritorno: vuoto
Lanci:
- IllegalArgumentException => se millis è negativo
- InterruptionException => se qualsiasi altro thread interrompe il thread corrente. Quando si verifica questa eccezione, lo stato interrotto del thread viene cancellato.
Descrizione: Questa variazione del metodo sleep fa dormire il thread corrente o interrompe temporaneamente la sua esecuzione per il dato numero di millisecondi (fornito nell'argomento del metodo). Tuttavia, durante la sospensione, il thread non perde il monitoraggio né blocca la proprietà.
# 2) Variante del metodo del sonno # 2
Prototipo: public static void sleep (long millis, int nanos) genera InterruptdException
Parametri:
occhiali da gioco per realtà virtuale xbox 360
- millis => la durata in millisecondi per la quale il thread deve dormire.
- nanos => nanosecondi aggiuntivi per i quali il thread può dormire. L'intervallo è compreso tra 0 e 999999.
Valore di ritorno: vuoto
Lanci:
- IllegalArgumentException => se il valore in millisecondi è negativo o nanos se fuori intervallo.
- InterruptionException => se qualsiasi altro thread interrompe il thread corrente. Lo stato interrotto del thread viene cancellato quando si verifica questa eccezione.
Descrizione: Questa variante del metodo sleep fa sì che il thread lo richiami per dormire o interromperne temporaneamente l'esecuzione per il numero di millisecondi specificato. (primo argomento in una chiamata al metodo). Inoltre, ha anche fornito il numero di nanosecondi (secondo argomento in una chiamata al metodo) per dormire.
Notare che l'accuratezza e la precisione dell'ora specificata dipendono dai timer e dagli scheduler del sistema. Quando il thread è in sospensione, la proprietà del blocco o del monitor non viene modificata.
Metodo di lavorazione del filo
Ogni volta che un thread dorme o viene sospeso, viene eseguito dallo scheduler. Il metodo Thread.sleep () comunica con lo scheduler del thread in modo che lo scheduler possa causare la modifica del thread attualmente in esecuzione per attendere lo stato per una determinata durata.
Una volta trascorso il tempo specificato, lo stato del thread viene modificato in 'eseguibile' in modo che possa attendere che la CPU proceda con l'esecuzione.
Quindi la durata per quanto tempo il thread dorme dipende dallo scheduler e non dal metodo. Poiché lo scheduler è una parte del sistema operativo, anche l'architettura del sistema operativo gioca un ruolo nei cambiamenti di stato del thread.
Ora che abbiamo visto in dettaglio il metodo Thread.sleep (), dovremmo tenere a mente alcuni punti durante l'utilizzo di questo metodo.
I puntatori includono:
# 1) Il metodo Thread.sleep () sospende sempre l'esecuzione del thread corrente.
#Due) La durata effettiva per la quale il thread dorme dipende dagli scheduler e dai timer di sistema.
Per esempio, per un sistema molto occupato, il tempo di inattività del thread può essere più lungo di quello specificato mentre, per il sistema che non è così occupato, potrebbe essere più o meno vicino a un tempo specificato.
# 3) Mentre il thread è in sospensione, non perde alcun blocco o monitor che aveva acquisito prima di dormire.
# 4) Il thread corrente che è in sospensione può essere interrotto da qualsiasi altro thread. In questo caso, viene generata 'InterructedException'.
Thread.sleep Esempio in Java
Passiamo ora a un esempio che dimostra il metodo del sonno. Qui abbiamo una classe thread che ha un metodo run (). Nel metodo run () chiamiamo 'Thread.sleep (1000)'. Quindi nella funzione principale, creiamo due istanze di questo thread, ovvero due thread. Quindi iniziamo i thread.
Nell'output, notiamo che poiché entrambi i thread sono in esecuzione, i thread vengono pianificati uno dopo l'altro, ovvero quando uno dorme, l'altro è in esecuzione.
dove si trova la chiave di sicurezza di rete sul mio router
Esempio:
class SleepThread extends Thread { //run method for thread public void run() { for(int i=1;i<5;i++) { try { //call sleep method of thread Thread.sleep(1000); }catch(InterruptedException e){System.out.println(e);} //print current thread instance with loop variable System.out.println(Thread.currentThread().getName() + ' : ' + i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread thread_1 = new SleepThread(); SleepThread thread_2 = new SleepThread(); //start threads one by one thread_1.start(); thread_2.start(); } } Produzione:

Quando osserviamo l'output, troviamo che Thread_0 e Thread_1 si alternano per eseguire.
Thread.sleep () con valore del tempo di sospensione negativo
Successivamente, mostriamo un altro esempio del metodo Thread.sleep (). Qui abbiamo considerato un caso speciale di un valore del tempo di sonno negativo. Il programma è simile al programma precedente ma il tempo di sospensione fornito è -500.
Esempio:
class SleepThread extends Thread { public void run() { for(int i=1;i<5;i++) { try { //call sleep method with negative value of time Thread.sleep(-500); }catch(InterruptedException e){System.out.println(e);} System.out.println(i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread t1=new SleepThread(); SleepThread t2=new SleepThread(); //start the threads one by one t1.start(); t2.start(); } } Produzione:

Dall'output, possiamo vedere che il metodo ha generato 'IllegalArgumentException' poiché il valore negativo del tempo di sospensione non è accettabile.
Domande frequenti
D # 1) Come funziona la sospensione dei thread in Java?
Risposta: Quando sleep () viene chiamato sul thread con una quantità di tempo specificata in millisecondi, il thread cessa la sua esecuzione. Cede la CPU. Pertanto, durante la durata in cui il thread è addormentato, gli altri thread possono utilizzare la CPU.
D # 2) Cosa sono yield () e sleep () nel thread Java?
Risposta: Il metodo sleep () del thread fa sì che il thread abbandoni la CPU e interrompa l'esecuzione. Mentre questo thread dorme, gli altri thread acquisiscono la CPU. Questo viene fatto dallo scheduler.
Il metodo yield () fa sì che il thread rinunci al controllo della CPU quando viene chiamato, ma il metodo sleep () mostra un comportamento più determinato rispetto a yield ().
D # 3) Come si impedisce a un thread Java di andare a dormire?
conoscenza del dominio sanitario per tester pdf
Risposta: Fermiamo il thread Java dallo sleep utilizzando il metodo interrupt (). Qualsiasi thread in attesa o inattivo può essere interrotto invocando il metodo interrupt () della classe Thread.
Q # 4) Possiamo uccidere un thread in Java?
Risposta: No, il thread non viene terminato in Java. Invece, il thread viene interrotto in Java. Il thread viene terminato e quindi può essere chiuso normalmente. Spesso utilizziamo un campo booleano volatile che viene periodicamente controllato per eventuali modifiche nei valori, in modo da poter terminare il thread.
D # 5) Perché sleep () è un metodo statico?
Risposta: Quando si chiama il metodo sleep () per mettere il thread in sospensione, lo chiamiamo sempre usando la classe Thread.
Per esempio , Thread.sleep (1000);
La chiamata precedente funziona nel contesto del thread corrente e mette il thread corrente in sospensione. Non chiamiamo mai il metodo utilizzando un'istanza di thread specifica. Quindi il metodo è statico.
Conclusione
In questo tutorial, abbiamo discusso il metodo sleep () dei thread in Java. Il metodo Sleep () fa sì che il thread corrente in esecuzione cessi la sua esecuzione per un periodo di tempo specificato che viene fornito come argomento al metodo sleep.
Lo scheduler di sistema funziona con il metodo sleep per mettere il thread corrente nello stato di attesa. Mentre il thread è in sospensione, continua a possedere i blocchi oi monitor acquisiti. Quando passiamo un valore negativo del tempo di sonno al metodo sleep, viene generato 'IllegalArgumentException'.
Quando passiamo un valore di tempo di sospensione valido al metodo sleep (), gli altri thread eseguiranno il turno mentre il thread corrente dorme.
=> Controlla qui per vedere qui i tutorial di formazione su Java dalla A alla Z.
Lettura consigliata
- Multithreading in Java - Tutorial con esempi
- Multithreading in C ++ con esempi
- Java sincronizzato: cos'è la sincronizzazione dei thread in Java
- Thread Java con metodi e ciclo di vita
- Tutorial Java String | Metodi Java String con esempi
- Come utilizzare il metodo Java toString?
- TreeMap in Java - Tutorial con esempi di Java TreeMap
- Tutorial JAVA per principianti: oltre 100 tutorial video Java pratici