Является ли while (true) { ... }
петлей в потоках плохой? Какая альтернатива?
Обновление; что я пытаюсь...
У меня есть ~ 10000 потоков, каждый из которых отправляет сообщения из своих частных очередей. У меня есть один поток, который создает сообщения один за другим и помещает их в правильную очередь потребителей. Каждая потребительская цепочка бесконечно циклически проверяет наличие сообщения в очереди и обрабатывает его.
Внутри Consumer.java:
@Override
public void run() {
while (true) {
Message msg = messageQueue.poll();
if (msg != null) {
... // do something with the message
}
}
}
Продюсер быстро вводит сообщения в очереди сообщений потребителей (несколько миллионов сообщений в секунду). Потребители должны обрабатывать эти сообщения как можно быстрее!
Примечание: while (true) { ... }
завершается сообщением KILL, отправленным Проджетором в качестве последнего сообщения. Тем не менее, мой вопрос заключается в правильном способе выполнения этой передачи сообщений...
Посмотрите новый вопрос относительно этого дизайна.