如果一个同步方法调用另一个同步方法(在另一个类中),它会执行 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 中输入另一个同步方法?或者 wait() 是否可以在 B 中输入其他同步方法,而在 A 中输入另一个同步方法的尝试将失败,直到 a() 返回?