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

Jon*_*han 8 java synchronization

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

public class A {
    public synchronized int do1() {...}
    public synchronized void do2(int i) {...}
}
Run Code Online (Sandbox Code Playgroud)

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

A a = new A();
a.do2(a.do1());
Run Code Online (Sandbox Code Playgroud)

ami*_*mit 9

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

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

另请注意,代码相当于

A a = new A();
int temp = a.do1();
a.do2(temp);
Run Code Online (Sandbox Code Playgroud)