Future
議論のために、キャンセルできないタスクを実装しているとしましょう。Java 6 API docは次のように述べています。
[
cancel()
] が返された後、後続の への呼び出しisDone()
は常に を返しtrue
ます。[ ] は、通常、タスクが既に正常に完了しているため、タスクをキャンセルできなかった場合に
cancel()
返されますfalse
また、次のようにも述べています。
[ ] は、このタスクが完了した場合
isDone()
に返されます。true
しかし、タスクが既に完了しているからではなく、単にキャンセルできないためにキャンセルが失敗した場合はどうなるでしょうか? この矛盾から抜け出す方法はありますか (キャンセルできないタスクをキャンセル可能にし、それを完全に回避する以外に)?