最佳答案
我们都知道为了调用Object.wait(),这个调用必须放在同步块中,否则会抛出IllegalMonitorStateException。但是做这个限制的原因是什么?我知道wait()释放监视器,但是为什么我们需要通过使特定块同步来显式获取监视器,然后通过调用wait()来释放监视器?
如果可以在同步块之外调用wait(),保留它的语义——挂起调用线程,那么潜在的损害是什么?