我正在尝试实施Future<>界面在我的项目中.但是看起来文档有点模糊.
>方法cancel()不会引发诸如InterruptedException或ExecutionException之类的异常.而且,它没有超时的变体.因此看起来,它不应阻塞.
>文件说
After this method returns, subsequent calls to isDone()
will always return true.
但
boolean isDone()
Returns true if this task completed.
因此,如果我们在任务处理过程中运行cancel()且无法取消,则此方法应等待任务完成.与1相矛盾
> cancel()的返回值描述为
Returns: false if the task could not be cancelled, typically because it has already completed normally; true otherwise
因此,如果任务正在运行并且有可能可以被取消但不能在此刻被取消,则我们应该返回true(我们不能声明无法取消它)或等待(但与1矛盾).
>但也有一条声明
Subsequent calls to isCancelled() will always return true if this method returned true.
但
boolean isCancelled()
Returns true if this task was cancelled before it completed normally.
如果我们在任务运行时运行cancel()并且无法说是否可以取消该任务,这与3矛盾(因为在这种情况下cancel()应该返回true,而isCancelled()应该返回false).
看来此API已开发很久了,此类不一致之处不应出现在文档中.但是那里.我理解不正确吗?