Dies ist eine sehr einfache Frage, da beide Methoden eine völlig unterschiedliche Verwendung haben.
Der Hauptunterschied besteht darin, zu warten, bis die Sperre oder der Monitor freigegeben ist, während der Ruhezustand während des Wartens keine Sperre oder Überwachung aufhebt. Wait wird für die Kommunikation zwischen Threads verwendet, während Sleep verwendet wird, um eine Pause bei der Ausführung einzuführen.
Dies war nur eine klare und grundlegende Erklärung. Wenn Sie mehr wollen, lesen Sie weiter.
Im Falle eines wait()
Methoden-Threads befindet er sich im Wartezustand und wird nicht automatisch zurückgegeben, bis die notify()
Methode aufgerufen wird (oder notifyAll()
wenn sich mehr als ein Thread im Wartezustand befindet und Sie alle diese Threads aktivieren möchten). Und Sie benötigen eine synchronisierte Sperre oder Objektsperre oder Klassensperre, um auf die Methoden wait()
oder notify()
oder zugreifen zu notifyAll()
können. Und noch etwas, daswait()
Methode wird für die Kommunikation zwischen Threads verwendet, da Sie einen anderen Thread benötigen, um diesen Thread zu aktivieren, wenn sich ein Thread im Wartezustand befindet.
In diesem Fall sleep()
handelt es sich jedoch um eine Methode, mit der der Vorgang einige Sekunden oder die gewünschte Zeit gehalten wird. Weil Sie keine notify()
oder keine notifyAll()
Methode provozieren müssen , um diesen Thread zurückzubekommen. Oder Sie benötigen keinen anderen Thread, um diesen Thread zurückzurufen. Wenn Sie möchten, dass nach wenigen Sekunden etwas passiert, wie in einem Spiel nach dem Zug des Benutzers, möchten Sie, dass der Benutzer wartet, bis der Computer spielt, dann können Sie das erwähnensleep()
Methode .
Und noch ein wichtiger Unterschied, der in Interviews oft gefragt wird: sleep()
gehört zur Thread
Klasse und wait()
gehört dazuObject
Klasse.
Dies sind alle Unterschiede zwischen sleep()
undwait()
.
Und es gibt eine Ähnlichkeit zwischen beiden Methoden: Beide sind geprüfte Anweisungen, daher müssen Sie catch oder throw versuchen, um auf diese Methoden zuzugreifen.
Ich hoffe, dies wird dir helfen.