以下是阻塞队列的单个使用者的简单实现。我的问题是,我应该需要哪些额外的代码才能使其投入生产?假设我需要这个消费者永远留在身边。
几个问题,例如:
- 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();
}
}
}
}