Warum muss wait () immer im synchronisierten Block sein
Wir alle wissen das, um @ aufzurufObject.wait()
, dieser Aufruf muss in einen synchronisierten Block gestellt werden, ansonsten einIllegalMonitorStateException
ist geworfen. Aber Was ist der Grund für diese Einschränkung? Ich weiß daswait()
gibt den Monitor frei, aber warum müssen wir den Monitor explizit erfassen, indem wir einen bestimmten Block synchronisieren, und dann den Monitor freigeben, indem wir @ aufrufewait()
?
Was ist der potenzielle Schaden, wenn es möglich wäre, @ aufzurufwait()
Außerhalb eines synchronisierten Blocks, unter Beibehaltung seiner Semantik - Unterbrechen des Aufruferthreads?