2016-06-21 5 views
0

In Multi-Thread-Anwendung;
Warum müssen wir sperren(), bevor wir warten()? Was könnte schief gehen, wenn wir nicht sperren()?Warum müssen wir vor() warten()?

+0

Welche Programmiersprache verwenden Sie? –

Antwort

1

Diese Frage ist ähnlich wie why wait() and notify() method should be called inside synchronized block, weil zum Eingeben in den synchronisierten Block der Thread zuerst die Sperre für das Objekt benötigt, dann kann nur er in den Block eingeben.

wait() und notify() sind im Grunde zwei Methoden für inter-thread communication, Also wenn ein Thread warten auf ein Objekt für eine Bedingung erfüllt sein soll, bevor Sie fortfahren, so kann es warten() und dann ein anderer Thread wann Wenn diese Bedingung erfüllt ist, ruft der Thread notify() für dasselbe Objekt auf, um den zuvor wartenden Thread zu benachrichtigen. Eigentlich ist es eine sehr häufige Frage. Ich schlage vor, dass Sie die folgenden Links einmal durchgehen, um Ihre Zweifel auszuräumen und Ihr Konzept klarer zu machen.

  1. http://javarevisited.blogspot.com/2011/05/wait-notify-and-notifyall-in-java.html
  2. Why must wait() always be in synchronized block