Несоответствие в java.util.concurrent.future?
-
24-10-2019 - |
Вопрос
Ради аргумента, допустим, я реализую Future
для задачи, которая не отменяется. А Java 6 API Doc говорит:
После [
cancel()
] возвращается, последующие вызовы вisDone()
всегда вернетсяtrue
.[
cancel()
] возвращаетfalse
Если задача не может быть отменена, обычно, потому что она уже нормально завершена
Также написано:
[
isDone()
] возвращаетtrue
Если эта задача завершена.
Но что, если моя отмена не удается не потому, что задача уже выполнена, а потому, что ее просто нельзя отменить? Есть ли выход из этого противоречия (кроме как сделать мою неисполнимую задачу отмену и вообще обойти ее)?
Решение
Похоже, что Док должен сказать
После
cancel()
возврат истинный, последующие призывы кisDone()
...
Javadocs часто ошибочны и противоречивы, и солнце часто даже не удосужилось исправить их даже через 10 лет. Тщательное тестирование всегда должно дополнять документы.