线程中的 while (true) { ... }
循环是否不好?有什么办法?
更新;我想要...
我有大约 10,000 个线程,每个线程都使用来自其私有(private)队列的消息。我有一个线程一一生成消息并将它们放入正确的消费者队列中。每个消费者线程无限循环,检查是否有消息出现在他们的队列中并处理它。
Consumer.java 内部:
@Override
public void run() {
while (true) {
Message msg = messageQueue.poll();
if (msg != null) {
... // do something with the message
}
}
}
生产者正在快速将消息放入消费者消息队列中(每秒数百万条消息)。消费者应尽快处理这些消息!
注意:while (true) { ... }
由 Producer 作为其最后一条消息发送的 KILL 消息终止。但是,我的问题是关于进行此消息传递的正确方法...
请看the new question , 关于这个设计。
最佳答案
您可以选择检查中断状态,而不是永远循环并中断或返回。
while (!Thread.currentThread().isInterrupted()) {
try {
doWork();
wait(1000);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
如果您的线程是由 ExecutorService 管理的任务,您可以通过调用 shutdownNow() 让它们全部正常结束。
关于Java:线程中的 `while (true) { ... }` 循环不好吗?有什么选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3367192/