public void function(object a, object b){
synchronized(a){
synchronized (b){
a.performAction(b);
b.performAction(a);
}
}
}
2 个线程死锁? 感谢您的回答!
最佳答案
当然,
假设我们有两个对象,
Object one = ...;
Object two = ...;
假设线程 1 调用:
function(one, two);
当线程 2 调用时:
function(two, one);
在线程 1 中,a == one
和 b == two
,但在线程 2 中,a == two
和 b == 一个
。
因此当线程 1 获得对象一的锁时,线程 2 可以获得对象二的锁。然后当每个线程都试图进行下一步时,它们将陷入死锁。
关于java - 这种方法可能会出现死锁吗?我该如何预防?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30445186/