Pourquoi faut-il attendre() toujours être synchronisé bloc

Nous savons tous que pour invoquer de l'Objet.wait(), cet appel doit être placé dans synchronisé bloc, sinon un IllegalMonitorStateException est levée. Mais quelle est la raison de cette restriction? Je sais que wait() communiqués de le surveiller, mais pourquoi avons-nous besoin explicitement acquérir le moniteur en faisant notamment le bloc synchronisé, puis relâchez-le moniteur en appelant wait()?

Quel est le potentiel de dégâts si il était possible d'invoquer wait() à l'extérieur d'un bloc synchronisé, en conservant c'est de la sémantique - la suspension de l'appelant fil?

InformationsquelleAutor diy | 2010-05-06