Questa è una domanda molto semplice, perché entrambi questi metodi hanno un uso totalmente diverso.
La differenza principale è attendere il rilascio del blocco o del monitor mentre il sonno non rilascia alcun blocco o monitor durante l'attesa. L'attesa viene utilizzata per la comunicazione tra thread mentre sleep viene utilizzato per introdurre la pausa durante l'esecuzione.
Questa era solo una spiegazione chiara e di base, se vuoi di più, continua a leggere.
Nel caso in cui il wait()
thread del metodo vada in stato di attesa e non ritorni automaticamente fino a quando non chiamiamo il notify()
metodo (o notifyAll()
se hai più di un thread in stato di attesa e vuoi riattivare tutto quel thread). E hai bisogno di sincronizzare o il blocco degli oggetti o il blocco della classe per accedere ai metodi wait()
o notify()
o notifyAll()
. E un'altra cosa, ilwait()
metodo viene utilizzato per la comunicazione tra thread perché se un thread passa in stato di attesa, è necessario un altro thread per riattivare quel thread.
Ma in questo caso sleep()
è un metodo che viene utilizzato per mantenere il processo per alcuni secondi o il tempo desiderato. Perché non è necessario provocare alcun metodo notify()
o notifyAll()
per riavere quel thread. Oppure non hai bisogno di nessun altro thread per richiamare quel thread. Ad esempio, se vuoi che qualcosa accada dopo pochi secondi, come in una partita dopo il turno dell'utente, vuoi che l'utente attenda fino alla riproduzione del computer, quindi puoi menzionare il sleep()
metodo.
E un'altra importante differenza che viene chiesta spesso nelle interviste: sleep()
appartiene alla Thread
classe e wait()
appartiene alla Object
classe.
Queste sono tutte le differenze tra sleep()
e wait()
.
E c'è una somiglianza tra i due metodi: entrambi sono istruzioni verificate, quindi è necessario provare a catturare o lanciare per accedere a questi metodi.
Spero che questo ti possa aiutare.