我有一个类,它包含对通过 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)
对每个工人做一个,但问题仍然存在。
是否有某种等待/通知机制等待多个线程?