Logo it.removalsclassifieds.com

Differenza tra sonno e attesa (con tavolo)

Sommario:

Anonim

Java ha diversi metodi per eseguire determinate azioni. Il metodo è un gruppo di codice, che viene eseguito solo quando viene chiamato; e può o meno restituire un risultato.

Metodi come il sonno e l'attesa vengono utilizzati per il multithreading. Entrambi mettono in pausa e mandano il thread in attesa, ma hanno grandi differenze nel funzionamento.

Dormi contro Aspetta

La differenza tra il metodo sleep() e wait() è che il metodo sleep() viene utilizzato nel programma per mettere in pausa l'esecuzione del thread corrente per un particolare periodo di tempo mentre il metodo wait() viene utilizzato nel programma per mettere in pausa o sospendere il thread corrente fino a quando non vengono invocati metodi specifici.

Durante l'utilizzo del metodo sleep, il thread corrente non perde la proprietà del monitor. Il sonno è un metodo statico ed è una parte del thread di classe. Al termine del tempo di attesa, il thread torna allo stato eseguibile originale. Garantisce l'utilizzo completo della CPU, durante l'attesa.

Considerando che il metodo wait() viene utilizzato nel programma Java per ordinare al thread corrente di attendere, fino a quando non viene richiamato un altro thread per quell'oggetto. Il thread prosegue quindi con l'esecuzione, una volta ottenuto il controllo del monitor. Non è un metodo statico a differenza di sleep e fa parte della classe dell'oggetto.

Tabella di confronto tra sonno e attesa

Parametri di confronto Sonno Attesa
Classe Il metodo sleep fa parte della classe thread Il metodo wait fa parte della classe oggetto
Tipo di metodo Il sonno è un metodo statico Wait non è un metodo statico
Tecnica di chiamata Il metodo sleep può essere chiamato dall'esterno del contesto sincronizzato Il metodo wait può essere chiamato solo dal contesto sincronizzato
Rilascio della serratura Il metodo di sospensione non rilascia il blocco sull'oggetto, per il timeout specificato, durante la sincronizzazione Il metodo Wait rilascia il blocco sull'oggetto, per avere la possibilità di eseguire, durante la sincronizzazione
Dichiarazione sonno vuoto statico pubblico() public final void wait()

Cos'è il sonno?

Il thread sleep() è un metodo statico nel programma Java che sospende il thread corrente e lo mette in stato di attesa per un periodo di tempo stabilito. Una volta che lo stato di attesa e il tempo sono trascorsi, la condizione del thread viene modificata in stato eseguibile. E poi attende la CPU per un'ulteriore esecuzione.

Lo scopo di questo metodo è creare un ritardo di pochi secondi nel programma e contemporaneamente avere il massimo utilizzo della CPU. Se il sistema è occupato o sovraccarico, il tempo di attesa o di pausa è maggiore, altrimenti sarebbe minore o uguale al tempo effettivo.

Il tipo di ritorno del metodo sleep può essere detto void, in quanto non restituisce alcun valore. Il thread di sospensione non perde il monitor né blocca il thread che ha già acquisito. Se in ogni caso il sonno è disturbato, il thread genererà Interrupted_Exception. La durata effettiva della sospensione del thread di solito dipende dagli scheduler e dai timer di sistema che fanno parte del sistema operativo.

La sintassi del metodo sleep è: public static void sleep (lungo millisecondi)

public static void sleep (long millisecondi, int nanosecondi)

Qui millisecondi e nanosecondi è il tempo per il quale il thread dovrebbe dormire.

Cos'è Aspetta?

Wait() è un metodo utilizzato per la comunicazione tra thread. Ogni volta che viene utilizzato il thread wait(), il thread chiamante o corrente viene messo in pausa e sospeso, fino a quando metodi come notify() o notifyAll() non vengono invocati nel sistema.

Il metodo notify() riattiva il thread specificato mentre notifyAll() è applicabile per ogni thread. Una volta sincronizzato, il metodo wait rinuncia al blocco delle risorse. Non esiste un valore di ritorno del metodo Wait, quindi si può dire che restituisce void.

Le due eccezioni del metodo Wait sono Interrupted_Exception (quando il thread corrente viene interrotto durante la sua sospensione) e IllegalMonitorStateException (quando il thread corrente non è il proprietario dell'oggetto sul monitor).

Il metodo Wait fa parte della classe dell'oggetto. Il metodo è applicabile solo e può essere richiamato su un blocco sincronizzato. Il metodo wait libera lo schermo sospeso o bloccato durante la sincronizzazione. E il metodo Wait consente esclusivamente ai thread multipli sincronizzati di accedere allo stesso oggetto uno per uno.

La sintassi del metodo Wait è: public final void wait()

Principali differenze tra sonno e attesa

Conclusione

Il metodo Sleep e Wait sono metodi nativi di Java. Ed entrambi sono ampiamente utilizzati per far passare il thread corrente in corso in uno stato di condizione non eseguibile. Entrambi i metodi vengono utilizzati per il multithreading nel programma.

Il metodo Sleep offre l'esclusiva opzione di bloccare lo schermo per un periodo di tempo specifico che di solito va da nanosecondi a millisecondi. Ma il metodo wait blocca o sospende lo schermo fino a quando non viene richiamato un altro metodo, quindi la durata non rimane specifica come durante l'uso del metodo sleep.

Si differenziano l'uno dall'altro in termini di funzionamento specifico come classe, metodo, sincronizzazione e durata del blocco e del rilascio e molti altri parametri. Spesso i programmatori si confondono su quale metodo potrebbe essere l'ideale per il sonno del thread. L'utilizzo dei metodi dipende da requisiti come la necessità, l'urgenza e il periodo di tempo del thread corrente.

Differenza tra sonno e attesa (con tavolo)