「每天一道面试题」为什么notify/wait方法必须在synchronized中

「每天一道面试题」为什么notify/wait方法必须在synchronized中_第1张图片

notify/notifyAll/wait这3个方法必须处于synchronized代码块或者synchronized方法中,否则就会抛出IllegalMonitorStateException异常。

这是因为调用这三个方法之前必须拿要到当前锁对象的监视器monitor对象,也就是说notify/notifyAll和wait方法依赖于monitor对象,又因为monitor存在于对象头的Mark Word中(存储monitor引用指针),而synchronized关键字可以获取monitor ,所以,notify/notifyAll和wait方法必须在synchronized代码块或者synchronized方法中调用。

你可能感兴趣的:(「每天一道面试题」为什么notify/wait方法必须在synchronized中)