<分区>
在 ExecutorCompletionService 中我们有 take() 和 poll()。 一个阻塞直到队列有一个 future ,如果队列中没有 future ,另一个返回 null。但是什么时候使用 take() 和 poll() 。是否有任何特殊条件来决定这个或者我们可以选择任何 ??
<分区>
在 ExecutorCompletionService 中我们有 take() 和 poll()。 一个阻塞直到队列有一个 future ,如果队列中没有 future ,另一个返回 null。但是什么时候使用 take() 和 poll() 。是否有任何特殊条件来决定这个或者我们可以选择任何 ??
最佳答案
当您的线程在等待队列中出现某些事情时可以执行其他事情时,您可以使用 poll() 。您编写一个调用 poll() 的循环,然后根据 poll() 是否返回值来做一件事或另一件事。
在多线程代码中使用 poll() IMO 有点代码味道。这意味着您有一个线程正在做两件不同的事情。为什么不在那种情况下使用两个线程?
关于java - 何时在 ExecutorCompletionService 中使用 poll() 与 take(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31357148/