我有一个java.util.BlockingQueue
充满 POJO,需要由ExecutorService
. 此队列必须由单个线程提供服务,但会同时从多个线程推送。
过去,我写的解决方案看起来有点像这样,但我真的很鄙视它:
executorService.execute(new Runnable() {
@Override
public void run() {
while (true) {
try {
POJO job = blockingQueue.take();
servicePOJO(job);
} catch (InterruptedException e) {
break;
}
}
}
});
有没有更好的方法来写这个,或者这是最好的方法?我不喜欢这样做的原因是,如果我需要添加多个消费者,我需要以实际线程池的大小在循环中运行上述内容。