将在一行中调用两个同步方法会导致死锁吗?

时间:2012-05-06 14:24:02

标签: java synchronization

如果一个类有两个同步方法:

public class A {
    public synchronized int do1() {...}
    public synchronized void do2(int i) {...}
}

在一行中调用这两个方法会导致死锁吗?

A a = new A();
a.do2(a.do1());

1 个答案:

答案 0 :(得分:9)

请注意,在您的示例中,不会同时调用这两种方法

它们之间有明确的严格顺序 - 在do2()完成之前无法调用do1()

另请注意,代码等同于

A a = new A();
int temp = a.do1();
a.do2(temp);