¿Por qué debe esperar () siempre estar en bloque sincronizado

Todos lo sabemos para invocarObject.wait(), esta llamada debe colocarse en un bloque sincronizado, de lo contrario unIllegalMonitorStateException es aventado. Pero¿Cuál es la razón para hacer esta restricción? Yo sé esowait() libera el monitor, pero ¿por qué necesitamos adquirir el monitor explícitamente sincronizando un bloque particular y luego liberar el monitor llamando await()?

¿Cuál es el daño potencial si fuera posible invocarlo?wait() fuera de un bloque sincronizado, conservando su semántica, ¿suspendiendo el hilo de la persona que llama?

Respuestas a la pregunta(8)

Su respuesta a la pregunta