8
如果一個類具有兩個同步方法:在一行中調用兩個同步方法會導致死鎖嗎?
public class A {
public synchronized int do1() {...}
public synchronized void do2(int i) {...}
}
將調用在同一行這兩種方法導致死鎖?
A a = new A();
a.do2(a.do1());
如果一個類具有兩個同步方法:在一行中調用兩個同步方法會導致死鎖嗎?
public class A {
public synchronized int do1() {...}
public synchronized void do2(int i) {...}
}
將調用在同一行這兩種方法導致死鎖?
A a = new A();
a.do2(a.do1());
注意,在你的榜樣,這兩種方法都不能同時調用。
它們之間有一個明確的嚴格順序 - do2()
不能被調用,直到do1()
完成!
還要注意,該代碼相當於
A a = new A();
int temp = a.do1();
a.do2(temp);
正要提到這一點,+1 – Jeffrey