Java:在多个线程上等待/通知

标签 java multithreading wait notify

我有一个类,其中包含对通过 TCP 接收对象的工作线程的引用集合(每个客户端 1 个)。

我正在尝试在我的类中创建一个方法getMessage(),该方法会等待任何工作线程收到消息并返回它。

我现在得到的是一个轮询系统:

public Object getMessage() {  
    while (true) {  
        for (Worker w : workers.values())  
             if (w.msgNumber() != 0)  
                 return w.getLastMsg();  
        Thread.sleep(100);  
    }  
}

它可以工作,但我认为它的可扩展性不是很好。

我知道我可以对每个工作人员执行wait(timeout),但问题仍然存在。

是否有某种等待多个线程的等待/通知机制?

最佳答案

您可以考虑使用阻塞队列来进行线程之间的通信。工作线程将插入到队列中,而 getMessage() 函数从队列中提取消息。

关于Java:在多个线程上等待/通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11164183/

相关文章:

c# - 等待用户输入 C# 控制台应用程序的设置时间

java - 如何在两个字符上使用 .indexOf?

java - 尝试在 Raspberry Pi 上运行基于 SWT 的 GUI

java - 如何在JAVA中求随机生成数的平均值

java - 生产者-消费者问题——最终双方都在等待

kubernetes - 使用命令行等待 kubernetes 作业在失败/成功时完成

java - 在标签中显示%

java - java中异步进程的技术和设计

java - 线程问题 - 接收方在发送方之前打印

c++ - sleep 或等待不会停止整个程序?