调用 Futur e的 Cancel(boolean) 方法,无论传送的参数为 ture 或者 false,调用 isCancelled 方法返回的都是 ture,并且如果提交的Callable如果没有 if(Thread.currentThread().isInterrupted()){
    throw new InterruptedException();
}
任务仍在继续继续,如果这样的话, isCancelled 方法返回的值是否还有价值,这个方法是否还有必要,求大神解答

解决方案 »

  1.   

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