1

一个问题,如果我可以。

假设我的主线程创建了 3 个线程。这 3 个线程在某个对象上调用 wait()。然后主线程为同一个对象调用 notifyAll()。

我如何确保线程 2 和只有线程 2 继续进行,而线程 1 和线程 3 只是忽略通知并返回等待状态?

本质上,我怎样才能将我的通知定向到选定的线程?

如果我没记错的话,这在 java 5 中会很简单。人们会创建不同的条件,让主线程只满足 thread2 正在等待的条件。

但是,我将如何在 pre5 中解决它?

干杯,维克

4

1 回答 1

1

您应该注意,即使没有notify. 所以你总是需要某种条件。代码的一般形式是:

synchronized (lockObj) {
    while (!condition) {
        lockObj.wait();
    }
}

仅唤醒执行特定操作的线程可能存在性能原因。对此进行调查java.util.concurrent.locks,但请注意,这是一个性能问题,而不是做正确的事情的问题。

于 2009-07-23T03:35:55.673 回答