Attempts to cancel execution of this task. This attempt will
fail if the task has already completed, has already been cancelled,
or could not be cancelled for some other reason. If successful,
and this task has not started when {@code cancel} is called,
this task should never run. If the task has already started,
then the {@code mayInterruptIfRunning} parameter determines
whether the thread executing this task should be interrupted in
an attempt to stop the task.
<p>After this method returns, subsequent calls to {@link #isDone} will
always return {@code true}. Subsequent calls to {@link #isCancelled}
will always return {@code true} if this method returned {@code true}.
@param mayInterruptIfRunning {@code true} if the thread executing this
task should be interrupted; otherwise, in-progress tasks are allowed
to complete
@return {@code false} if the task could not be cancelled,
typically because it has already completed normally;
{@code true} otherwise
Attempts to cancel execution of this task. This attempt will fail if the task has already completed, has already been cancelled, or could not be cancelled for some other reason. If successful, and this task has not started when {@code cancel} is called, this task should never run. If the task has already started, then the {@code mayInterruptIfRunning} parameter determines whether the thread executing this task should be interrupted in an attempt to stop the task.
<p>After this method returns, subsequent calls to {@link #isDone} will always return {@code true}. Subsequent calls to {@link #isCancelled} will always return {@code true} if this method returned {@code true}.
@param mayInterruptIfRunning {@code true} if the thread executing this task should be interrupted; otherwise, in-progress tasks are allowed to complete @return {@code false} if the task could not be cancelled, typically because it has already completed normally; {@code true} otherwise