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?

Antworten auf die Frage(16)

Ihre Antwort auf die Frage