Heim > Java > JavaBase > Was ist der Unterschied zwischen Warten und Schlafen in Java?

Was ist der Unterschied zwischen Warten und Schlafen in Java?

青灯夜游
Freigeben: 2019-12-27 15:31:17
Original
4520 Leute haben es durchsucht

Was ist der Unterschied zwischen Warten und Schlafen in Java?

sleep:

Die Sleep-Methode gehört zur Methode in der Thread-Klasse, was bedeutet, einen Thread in den Ruhezustand zu versetzen und aufzuwachen Nachdem ein Thread-Objekt eine bestimmte Zeit lang gewartet hat, wechselt er nicht sofort in den Ausführungsstatus, da der Thread-Planungsmechanismus auch Zeit benötigt, um die Ausführung des Threads fortzusetzen. Es werden nicht alle von ihm gehaltenen Objektsperren freigegeben, sodass der Betrieb anderer Prozessobjekte nicht beeinträchtigt wird. Während des Ruhezustands kann jedoch sein Interrupt() von anderen Objekten aufgerufen werden, was zu einer InterruptedException-Ausnahme führt. Wenn Ihr Programm diese Ausnahme nicht abfängt, wird der Thread abnormal beendet und wechselt in den TERMINATED-Status , Ausnahme, dann führt das Programm weiterhin den Catch-Anweisungsblock (und möglicherweise den Final-Anweisungsblock) und den nachfolgenden Code aus.

wait:

wait ist eine Mitgliedsmethode von Object. Sobald ein Objekt die Wait-Methode aufruft, müssen zum Aufwecken die Methoden notify() und notifyAll() verwendet werden Wenn ein Thread eine Synchronisationssperre für ein oder mehrere Objekte besitzt, gibt der Thread nach dem Aufruf von wait() alle von ihm gehaltenen Synchronisationsressourcen frei, nicht beschränkt auf das Objekt, für das die Methode wait() aufgerufen wurde. Die Methode wait() kann auch von anderen Objekten generiert werden, die während des Wartevorgangs die Methode interrupt() aufrufen.

Der Unterschied zwischen den Sleep- und Wait-Methoden ist:

 ● sleep kommt von der Thread-Klasse, während wait von der Object-Klasse kommt

● Die Sleep-Methode gibt die Sperre nicht frei, sodass andere Threads Synchronisationskontrollblöcke oder -methoden verwenden können.

● Wait, notify und notifyAll können nur in Synchronisationskontrollmethoden oder Synchronisationskontrollblöcken verwendet werden , während Sleep überall verwendet werden kann

● Sleep muss Ausnahmen abfangen, während Wait, Notify und NotifyAll keine Ausnahmen abfangen müssen

Empfohlenes Lernen: Java-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Warten und Schlafen in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage