以下は、ブロッキング キューの 1 つのコンシューマの簡単な実装です。私の質問は、本番環境に対応させるために必要な追加のコードは何ですか? この消費者が永遠に存在する必要があると仮定します。
たとえば、いくつかの質問:
- while(true) で十分ですか?
- 行っていたことを再開できるように InterruptedException を取得した場合はどうすればよいですか?
- スレッドがハングするとどうなりますか?
- 例外が原因でスレッドが終了した場合はどうなりますか?
私の全体的な質問は、このシングルスレッド コンシューマーの管理と監視の実装に関するいくつかのアイデアになると思います。または、基本実装を提供する既存のライブラリがあるかどうか。
どうもありがとう!
public class Consumer implements Runnable{
private BlockingQueue queue;
public Consumer (BlockingQueue queue) {
this.queue = queue;
}
@Override
public void run() {
while(true){
try {
Object task = queue.take();
...
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}
}