如果一个类有两个同步方法:
public class A {
public synchronized int do1() {...}
public synchronized void do2(int i) {...}
}
在一行中调用这两个方法会导致死锁吗?
A a = new A();
a.do2(a.do1());
答案 0 :(得分:9)
请注意,在您的示例中,不会同时调用这两种方法。
它们之间有明确的严格顺序 - 在do2()
完成之前无法调用do1()
!
另请注意,代码等同于
A a = new A();
int temp = a.do1();
a.do2(temp);