Несоответствие в java.util.concurrent.Future? - PullRequest
4 голосов
/ 03 июня 2010

Ради аргумента, скажем, я реализую Future для задачи, которую нельзя отменить. Java 6 API документ говорит:

После возврата [cancel()] последующие вызовы isDone() всегда будут возвращать true.

[cancel()] возвращает false, если задача не может быть отменена, как правило, потому что она уже была выполнена нормально

Там также сказано:

[isDone()] возвращает true, если эта задача выполнена.

Но что если моя отмена завершится неудачей не потому, что задача уже выполнена, а потому, что ее просто нельзя отменить? Есть ли выход из этого противоречия (кроме как сделать мою невыполнимую задачу отменяемой и вообще обойти ее)?

1 Ответ

1 голос
/ 03 июня 2010

Похоже, документ должен сказать

После cancel() возвращает true , последующие вызовы isDone() ...

Javadocs часто абсолютно неверны и противоречивы, и Sun часто даже не удосужился исправить их даже через 10 лет. Тщательное тестирование всегда должно дополнять документы.

...