为了论证,我们假设我正在为一个不可取消的任务实施Future
。 Java 6 API doc说:
在[
如果无法取消任务,cancel()
]返回后,对isDone()
的后续调用将始终返回true
。[
cancel()
]会返回false
,通常是因为它已经正常完成
它还说:
如果此任务完成,[
isDone()
]会返回true
。
但是如果我的取消失败不是因为任务已经完成,而是因为它根本无法取消呢?有没有办法解决这个矛盾(除了让我的无法解决的任务可以取消并完全回避它)?
答案 0 :(得分:1)
看起来似乎应该说
在
cancel()
返回 true 之后,后续调用isDone()
...
Javadocs经常是错误的和矛盾的,甚至在10年之后,Sun甚至都没有费心去修理它们。仔细测试应该始终补充文档。