我是否可以提问。
假设我的主线程创建了3个线程。 这三个线程在某个对象上调用wait()。 然后主线程调用notifyAll()来获取同一个对象。
如何确保thread2和thread2继续进行,而thread1和thread3只是忽略通知并返回等待状态?
从本质上讲,如何将我的通知指向选定的帖子?
如果我没有弄错,在java 5中这很简单。一个会创建不同的条件并且主线程只满足thread2正在等待的条件。
但是,我如何在pre5中解决它?
干杯, 维克
答案 0 :(得分:1)
你应该注意,即使没有notify
,线程也可以自发唤醒。所以你总是需要某种条件。代码的一般形式是:
synchronized (lockObj) {
while (!condition) {
lockObj.wait();
}
}
可能有性能原因只能唤醒执行特定操作的线程。对于java.util.concurrent.locks
的调查,请注意这是一个性能问题,而不是正确的问题。