何时在ExecutorCompletionService

时间:2015-07-11 12:23:27

标签: java multithreading executorservice executor

在ExecutorCompletionService中,我们有take()和poll()。 一个阻塞直到队列有一个未来,如果在Queue中没有未来,则其他返回null。但是何时使用take()vs poll()。是否有任何特殊条件来决定这个或我们可以去任何??

1 个答案:

答案 0 :(得分:4)

当你的线程在等待队列中出现的东西时,你可以使用poll()。你编写了一个调用poll()的循环,然后根据poll()是否返回一个值来做其中一个或另一个。

在多线程代码中使用poll()IMO有点代码味道。这意味着你有一个线程正在做两件事。在这种情况下为什么不使用两个线程?