有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java定向notifyAll()

请允许我提个问题

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

当thread1和thread3忽略通知并返回等待状态时,我如何确保thread2之外的线程(只有thread2)继续运行

本质上,我如何将通知定向到所选线程

如果我没有弄错的话,这在Java5中是非常简单的。一种方法是创建不同的条件,让主线程只满足thread2正在等待的条件

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

干杯, 维克


共 (1) 个答案

  1. # 1 楼答案

    您应该注意,即使没有notify,线程也可以自动唤醒。所以你总是需要一些条件。守则的一般形式如下:

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

    只唤醒执行特定操作的线程可能有性能方面的原因。为此,请查看java.util.concurrent.locks,但请注意,这是一个性能问题,而不是做正确的事情的问题