Heim  >  Artikel  >  Java  >  Was ist der Unterschied zwischen den Methoden wait() und join() in Java?

Was ist der Unterschied zwischen den Methoden wait() und join() in Java?

青灯夜游
青灯夜游Original
2018-12-14 15:28:399413Durchsuche

Der Unterschied zwischen den Methoden „wait()“ und „join()“ in Java besteht darin, dass sie in verschiedenen Java-Paketen vorhanden sind. Die Methode „wait()“ wird für die Kommunikation zwischen Threads verwendet und der Thread kann im von ihr festgelegten Wartezustand gestartet werden ; Die Methode „join()“ wird zum Hinzufügen einer Reihenfolge zwischen mehreren Threads verwendet. Die dadurch erforderliche Wartezeit kann nicht unterbrochen werden.

Was ist der Unterschied zwischen den Methoden wait() und join() in Java?

Die Methode wait() in Java

Die Funktion der Methode wait() ist Lassen Sie den aktuellen Thread Um in den Wartezustand zu gelangen, wird wait() zusammen mit den Methoden notify() und notifyAll() verwendet.

Die Methoden notify() und notifyAll() werden verwendet, um wartende Threads aufzuwecken. Die Methode notify() weckt einen einzelnen Thread auf und die Methode notifyAll() weckt alle Threads auf.

Die Methode „join()“ in Java

Die Methode „join()“ wartet darauf, dass dieser Thread endet und seine Ausführung abschließt. Seine Hauptfunktion besteht darin, zu synchronisieren und die Ausführung zwischen Threads von „parallel“ in „seriell“ zu ändern.

Das heißt, wenn wir die Methode join() von Thread B in Thread A aufrufen, ändert sich der Thread-Ausführungsprozess: Thread A muss warten, bis Thread B die Ausführung abgeschlossen hat, bevor er mit der Ausführung fortfahren kann.

Ähnlichkeiten zwischen den Methoden „wait()“ und „join()“

1. Die Methoden „wait()“ und „join()“ werden beide für Pausen verwendet Der aktuelle Thread in Java wechselt in den Wartezustand.

2. In Java können Sie die Methode interrupt() aufrufen, um den Thread-Status von wait() und join() zu unterbrechen.

3. wait() und join() sind beide nicht statische Methoden.

4. wait() und join() sind in Java alle überladen. wait() und join() haben kein Timeout, akzeptieren aber einen Timeout-Parameter.

Obwohl die Methode „wait()“ und die Methode „join()“ ähnlich sind, gibt es Unterschiede zwischen der Methode „wait()“ und der Methode „join()“.

Der Unterschied zwischen der Methode wait() und der Methode join()

Was ist der Unterschied zwischen den Methoden wait() und join() in Java?

1 , Es gibt verschiedene Java-Pakete (der offensichtlichste Unterschied)

Die Methode „wait()“ muss in der Klasse „java.lang.Object“ deklariert werden und die Methode „join()“ befindet sich in Java . In der lang.Thread-Klasse deklariert.

2. Verschiedene Verwendungszwecke

Die Methode „wait()“ wird für die Kommunikation zwischen Threads verwendet und die Methode „join()“ wird zum Hinzufügen einer Sortierung zwischen mehreren verwendet Die Ausführung der beiden Threads muss abgeschlossen sein, bevor der erste Thread mit der Ausführung beginnen kann.

3. Unterschiede beim Aufwecken von Threads

Wir können einen Thread starten, der über die Methode wait() in den Wartezustand wechselt, indem wir notify() und notifyAll( ) Methoden. Aber wir können die durch die Methode „join()“ auferlegte Wartezeit nicht unterbrechen, es sei denn, die Ausführung des Threads, der die Verbindung unterbrochen hat, ist abgeschlossen.

4. Synchronisationskontext (der wichtigste Unterschied)

Die Methode wait() muss aus einem synchronisierten Kontext aufgerufen werden, d. h. aus einem synchronisierten Block oder einer synchronisierten Methode. Andernfalls wird eine IllegalMonitorStateException ausgelöst.

Wir können die Methode „join()“ jedoch mit oder ohne synchronisierten Kontext in Java aufrufen.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen den Methoden wait() und join() in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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