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