Ton*_*ony 19 java multithreading synchronized wait
在线程可以wait
在对象上之前,它必须获取该对象上的监视器.然后释放监视器,一旦唤醒,线程就会尝试重新获取它.
但是当调用时,线程保持的其他监视器会发生什么wait
?
考虑这个例子:
Object a = // ... Object b = // ... synchronized(a) { synchronized(b) { b.wait(); // continue } }
当线程调用b.wait()
,它会释放对锁既 a
和b
,或只b
?
aio*_*obe 17
只有b
.
这类问题的专制来源是Java语言规范.本案例中的相关部分是17.8等待集和通知:
让螺纹吨是线程上执行对象的等待方法米,并让Ñ是锁定动作由数量吨上米尚未由解锁操作相匹配.发生以下操作之一.
- [...]
否则,将发生以下序列:
- 螺纹吨被添加到等待集中的对象米,并且执行Ñ解锁动作上米.
- [...]
归档时间: |
|
查看次数: |
3200 次 |
最近记录: |