usi*_*mon 4 java multithreading deadlock locking
如果我在两个方法中使用synchronize(this)而另一个调用另一个方法,那么我是否会陷入死锁状态,或者它是否会起作用,因为线程已经拥有了锁?
想象下面的课程:
public class Test {
public void foo() {
synchronize(this) {
bar();
}
}
public void bar() {
synchronize(this) {
// do something
}
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,有两种方法foo和bar,它们都依赖于同步.
当调用foo()时,将获得一个锁(this); bar会在foo调用时尝试执行相同的操作(从而导致死锁),还是会意识到锁已经被同一个线程获取了?
希望我的解释或多或少清楚;-)
| 归档时间: |
|
| 查看次数: |
501 次 |
| 最近记录: |