主题A
synchronized void methodA() throws Exception {
wait();
}
synchronized void methodB() {
notify():
}
主题B
//... work
A.methodB(); // thread A was so far blocked by calling wait()
在这样的场景中,被阻止的线程可以自行唤醒吗?
答案 0 :(得分:4)
被阻止的线程可以自行唤醒吗?
不。
在wait()
(或任何其他阻塞调用)中被阻止的线程在解除阻塞之前无法执行任何代码。
做任何事情......包括调用notify()
......要求线程已被解除阻止。
如果你的设计正是如此,那就无法实现。这里有几个想法......虽然两者都不是你要问的。
而不是wait()
使用定时等待;例如wait(millis)
。那将等待通知(来自另一个线程!)或直到millis
毫秒已经过去......以先发生者为准。
使用第二个帖子notify()
第一个帖子。