在对象上线程可以wait
之前,它必须获取该对象上的监视器。监视器随后被释放,并且该线程一旦被唤醒就试图重新获取它。Java:线程在对象上等待时是否释放所有监视器?
但是当线程调用wait
时线程保持其他监视器会发生什么?
考虑这个例子:
Object a = // ... Object b = // ... synchronized(a) { synchronized(b) { b.wait(); // continue } }
当线程调用b.wait()
,将其发布在都a
和b
,或仅b
锁?