同期されたメソッドが (別のクラスの) 別の同期されたメソッドを呼び出し、それが wait() を実行するとどうなるでしょうか。別のクラスですが、最初の同期メソッドでもロックが解除されますか?
例えば
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 = false の間に A に別の同期メソッドを入力することは可能ですか? それとも、a() が戻るまで、A で別の同期メソッドに入ろうとしても失敗する一方で、wait() は B で他の同期メソッドに入ることを可能にするだけですか?