逻辑上,可以理解,调用wait
方法的线程应该已经获取了正在调用wait
的对象的内部锁。
oracle教程here中陈述了“在对象的同步方法中调用wait
是获取内部锁定的简单方法”,这意味着至少可能存在获得锁定的另一种方式。
我的问题是,为了调用wait
,除了在synchronized方法中调用wait
之外,还有其他方法来获取内部锁吗? ......他们是什么?
答案 0 :(得分:0)
一些(密切相关的)其他人会浮现在脑海中:
在synchronized
区块中:
synchronized (this) {
wait();
}
在非同步方法中,从同步方法内部调用:
synchronized void a() {
b();
}
void b() {
wait();
}
在非同步方法中,从同步块内部调用:
synchronized (this) {
b();
}
void b() {
wait();
}