【发布时间】:2011-03-22 23:38:07
【问题描述】:
线程中的while (true) { ... } 循环坏了吗?有什么办法?
更新;我想要...
我有大约 10,000 个线程,每个线程都使用来自其私有队列的消息。我有一个线程一一生成消息并将它们放入正确的消费者队列中。每个消费者线程无限循环,检查是否有消息出现在他们的队列中并处理它。
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。
【问题讨论】:
-
你为什么不提供更多关于你想要达到的目标的细节,我们会告诉你是否有更好的方法来做到这一点。
-
@Ryan:已更新;请看一下! -
10000 个线程似乎是个坏主意,因为每个线程都可能存在开销...
-
@Colen:请看我的新问题,因为我也认为这也是个坏主意......还有什么选择? stackoverflow.com/questions/3367383/… -
10k线程的开销会很大
标签: java multithreading concurrency loops message-passing