0
我有一个java.util.BlockingQueue
这是POJOs的需要由ExecutorService
服务。该队列必须由单个线程提供服务,但会一次从多个线程推送。Mullti生产者单消费者执行者服务设计
在过去,我已经写了我的解决方案看起来有点像,但我真的很鄙视它:
executorService.execute(new Runnable() {
@Override
public void run() {
while (true) {
try {
POJO job = blockingQueue.take();
servicePOJO(job);
} catch (InterruptedException e) {
break;
}
}
}
});
有没有写这更好的办法,或这是最佳方式正在做?我不喜欢这样做的原因是因为如果我需要添加多个消费者,我需要在实际线程池的大小的循环中运行上面的代码。
你为什么不简单地使用单线程执行程序? – sarcan 2012-08-10 23:50:41
这里不清楚'ExecutorService'的意义,除了看起来你没有创建一个专门服务这个队列的线程。你当然是在窃取一个线程来执行这个操作,并且它不符合'ExecutorService'的预期用法。另外,当你通过调用Thread.currentThread()。interrupt()'传播中断时,你在这里吞下'InterruptedException'。 – seh 2012-08-11 00:26:09