Java:当线程等待对象时,所有监视器都会被释放吗?
2022-09-02 09:31:51
在线程可以对对象进行操作之前,它必须在该对象上获取监视器。然后释放监视器,线程在唤醒后尝试重新获取它。wait
但是,当线程调用时,线程持有的其他监视器会发生什么情况?wait
请考虑以下示例:
Object a = // ... Object b = // ... synchronized(a) { synchronized(b) { b.wait(); // continue } }
当线程调用时,它会在 and 和 上释放锁,还是只释放锁?b.wait()
a
b
b