while (true) { ... }
スレッドのループは悪いですか?代替手段は何ですか?
アップデート; 私がやろうとしていること...
私は最大10,000のスレッドを持っており、それぞれがプライベートキューからのメッセージを消費しています。メッセージを1つずつ生成し、それらを正しいコンシューマーのキューに入れるスレッドが1つあります。各コンシューマスレッドは無期限にループし、キューに表示されるメッセージをチェックして処理します。
Consumer.javaの内部:
@Override
public void run() {
while (true) {
Message msg = messageQueue.poll();
if (msg != null) {
... // do something with the message
}
}
}
プロデューサーは、メッセージをコンシューマーメッセージキュー内に急速に配置しています(1秒あたり数百万メッセージ)。消費者はこれらのメッセージをできるだけ速く処理する必要があります!
注:はwhile (true) { ... }
、最後のメッセージとしてプロデューサーによって送信されたKILLメッセージによって終了します。しかし、私の質問は、このメッセージパッシングを行う適切な方法についてです...
このデザインについては、新しい質問をご覧ください。