可以安全地假设
java.util.concurrent.CompletionService.take().isDone()
总是返回true?如果是这样,为什么 take() 返回一个 Future,而不是直接返回值?如果不是,文档中使用的“已完成的任务”是什么意思?
最佳答案
因为你可以将 Future 用于其他事情。当你提交()时,你就得到了 future 。所以你可以首先使用返回的Future对象来监视状态或提前取消。其次,如果您更改 futureFactory() (我认为它的名称有所不同,但我安装了 Java 5 而不是 6),您可以向 future 对象添加各种额外的成员。
因此,在执行 take() 时,您是对的,在这种情况下, future 的一部分(状态的跟踪/取消)并不是很有用。但是 OTOH,为什么不按原样返回整个 future ,包括扩展功能?
关于java - CompletionService.take().isDone() 总是 true 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2610295/