java.util.concurrent.Future中的不一致?

时间:2010-06-03 15:20:04

标签: java concurrency future

为了论证,我们假设我正在为一个不可取消的任务实施FutureJava 6 API doc说:

  

在[cancel()]返回后,对isDone()的后续调用将始终返回true

     如果无法取消任务,

[cancel()]会返回false,通常是因为它已经正常完成

它还说:

  如果此任务完成,

[isDone()]会返回true

但是如果我的取消失败不是因为任务已经完成,而是因为它根本无法取消呢?有没有办法解决这个矛盾(除了让我的无法解决的任务可以取消并完全回避它)?

1 个答案:

答案 0 :(得分:1)

看起来似乎应该说

  

cancel()返回 true 之后,后续调用isDone() ...

Javadocs经常是错误的和矛盾的,甚至在10年之后,Sun甚至都没有费心去修理它们。仔细测试应该始终补充文档。