Вопрос

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

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

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

Также написано:

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

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

Это было полезно?

Решение

Похоже, что Док должен сказать

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top