10
为什么必须wait()始终处于同步块中
我们都知道,为了调用Object.wait(),必须将此调用放置在同步块中,否则将IllegalMonitorStateException引发。但是,进行此限制的原因是什么?我知道这wait()会释放监视器,但是为什么我们需要通过使特定块同步来显式获取监视器,然后通过调用来释放监视器wait()? 如果可以wait()在同步块之外调用并保留其语义-挂起调用者线程,可能造成什么损害?