8

クラスに 2 つの同期メソッドがある場合:

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

これら 2 つのメソッドを 1 行で呼び出すと、デッドロックが発生しますか?

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

1 に答える 1

9

あなたの例では、2 つのメソッドが同時に呼び出されていないことに注意してください。

それらの間には明確な厳密な順序があります -完了do2()するまで呼び出すことはできませんdo1()!

また、コードは次と同等です。

A a = new A();
int temp = a.do1();
a.do2(temp);
于 2012-05-06T14:27:12.497 に答える