共计 784 个字符,预计需要花费 2 分钟才能阅读完成。
查询到 cancel 方法其原型为
/* ------------- Control and status methods -------------- */
/**
* If not already completed, completes this CompletableFuture with
* a {@link CancellationException}. Dependent CompletableFutures
* that have not already completed will also complete
* exceptionally, with a {@link CompletionException} caused by
* this {@code CancellationException}.
*
* @param mayInterruptIfRunning this value has no effect in this
* implementation because interrupts are not used to control
* processing.
*
* @return {@code true} if this task is now cancelled
*/
public boolean cancel(boolean mayInterruptIfRunning) {boolean cancelled = (result == null) &&
internalComplete(new AltResult(new CancellationException()));
postComplete();
return cancelled || isCancelled();}
mayInterruptIfRunning 参数实际并没有被用到,取消操作实际是软取消,并不会直接从线程池中进行取消操作,
实际测试发现 cancel 确实有问题,没有按照想象中快速取消超时任务,最终会导致线程池阻塞,不知道该怎么办
正文完