4

Future議論のために、キャンセルできないタスクを実装しているとしましょう。Java 6 API docは次のように述べています。

[ cancel()] が返された後、後続の への呼び出しisDone()は常に を返しtrueます。

[ ] は、通常、タスクが既に正常に完了しているため、タスクをキャンセルできなかった場合にcancel()返されますfalse

また、次のようにも述べています。

[ ] は、このタスクが完了した場合isDone()に返されます。true

しかし、タスクが既に完了しているからではなく、単にキャンセルできないためにキャンセルが失敗した場合はどうなるでしょうか? この矛盾から抜け出す方法はありますか (キャンセルできないタスクをキャンセル可能にし、それを完全に回避する以外に)?

4

1 に答える 1

1

ドキュメントは言うべきだと思われます

truecancel()を返した後、 ...への後続の呼び出しisDone()

Javadocは、完全に間違っていて矛盾していることが多く、Sunは10年経ってもそれらを修正することすらしていません。注意深いテストは常にドキュメントを補足する必要があります。

于 2010-06-03T15:38:32.920 に答える