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);
在线程1a == one
和中b == two
,但在线程2a == two
和中b == one
。
因此,当线程1获得对对象1的锁定时,线程2可以获得对对象2的锁定。然后,当每个线程尝试执行下一步时,它们将陷入僵局。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句