如果一個同步方法調用wait()的另一個同步方法(在另一個類中)會怎麼樣。鎖定是否會以第一種同步方法釋放,雖然在另一個類中?同步方法調用另一個調用wait()的同步方法
E.g.
public class A {
private B b;
public A(B b) {
this.b = b;
}
public synchronized String a() {
return b.b();
}
}
public class B {
public synchronized String b() {
while (!someCondition) wait();
return "Success!";
}
}
所以我的問題是,纔有可能在時間someCondition期間,進入一個不同的同步方法=假?或者wait()是否可以在B中輸入其他同步方法,而嘗試在A中輸入另一個同步方法將會失敗,直到()返回?
沒有,只會釋放'B',請參閱:http://tutorials.jenkov.com /java-concurrency/nested-monitor-lockout.html –