Java 中 Future 的 isCancelled 方法是否有必要

Zh_xy33 2019-01-25 04:27:25
调用 Futur e的 Cancel(boolean) 方法,无论传送的参数为 ture 或者 false,调用 isCancelled 方法返回的都是 ture,并且如果提交的Callable如果没有

if(Thread.currentThread().isInterrupted()){
throw new InterruptedException();
}
任务仍在继续继续,如果这样的话, isCancelled 方法返回的值是否还有价值,这个方法是否还有必要,求大神解答
...全文
1317 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zh_xy33 2019-01-25
  • 打赏
  • 举报
回复
引用 1 楼 qq_39936465 的回复:
当创建了Future实例,任务可能有以下三种状态:

1.等待状态。此时调用cancel()方法不管传入true还是false都会标记为取消,任务依然保存在任务队列中,但当轮到此任务运行时会直接跳过。
2.完成状态。此时cancel()不会起任何作用,因为任务已经完成了。
3.运行中。此时传入true会中断正在执行的任务,传入false则不会中断。

你说的情况可能是第一种状态。

我说的是第三种,你说的是大家认为的情况,但是实际情况是我说的那样,亲测。
qq_39936465 2019-01-25
  • 打赏
  • 举报
回复
当创建了Future实例,任务可能有以下三种状态: 1.等待状态。此时调用cancel()方法不管传入true还是false都会标记为取消,任务依然保存在任务队列中,但当轮到此任务运行时会直接跳过。 2.完成状态。此时cancel()不会起任何作用,因为任务已经完成了。 3.运行中。此时传入true会中断正在执行的任务,传入false则不会中断。 你说的情况可能是第一种状态。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧