IAm*_*aja 21 java concurrency multithreading
我在亨氏Kabutz的一看到这个Java的专家通讯版本,虽然其余的(事实上,所有)Kabutz博士的文章都是很好解释和详细,他似乎在掩饰什么这段代码是干什么的,或者更重要的是,它的意义是:
public class SomeObject {
private Object lock1;
private Object lock2;
public void doSomething() {
synchronized(lock1) {
synchronized(lock2) {
// ...
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
嵌套synchronized块的含义是什么?这对于尝试不同的线程doSomething()有何影响?
Bru*_*owe 33
有两个可能需要注意的问题
如果使用wait/notify,嵌套锁可能很容易导致死锁.这是对原因的解释.http://tutorials.jenkov.com/java-concurrency/nested-monitor-lockout.html
一个人应该警惕,如果另一个方法希望锁定相同的两个对象,它们必须始终以相同的顺序执行,否则可能会出现另一种死锁情况,如本文所述:如何避免嵌套同步和导致的死锁
| 归档时间: |
|
| 查看次数: |
19093 次 |
| 最近记录: |