Reputation: 215
For the sake of argument, let's say I'm implementing Future
for a task which is not cancelable. The Java 6 API doc says:
After [
cancel()
] returns, subsequent calls toisDone()
will always returntrue
.[
cancel()
] returnsfalse
if the task could not be cancelled, typically because it has already completed normally
It also says:
[
isDone()
] returnstrue
if this task completed.
But what if my cancellation fails not because the task is already completed, but because it simply cannot be cancelled? Is there a way out of this contradiction (other than making my uncancelable task cancelable and sidestepping it altogether)?
Upvotes: 4
Views: 535
Reputation: 81154
It does seem like the doc should say
After
cancel()
returns true, subsequent calls toisDone()
...
The Javadocs are often flat-out wrong and contradictory, and Sun has often not even bothered to fix them even after 10 years. Careful testing should always supplement the docs.
Upvotes: 1