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 次 |
| 最近记录: |