【发布时间】:2015-08-13 11:28:08
【问题描述】:
Java Concurrency in Practice (Brian Goetz) 中有说明(重点是我的):
当 Future.get 抛出 InterruptedExcetion 或 TimeoutException 并且您知道程序不再需要结果时,使用 Future.cancel 取消任务
Future.get 的 Javadoc 声明(突出显示是我的):
抛出 InterruptedException - 如果当前线程在等待时被中断
所以,据我了解:如果我收到 InterruptedException,那么我的任务还没有开始(因为正在执行的线程在等待时被中断)。那我为什么要取消我的任务呢?
【问题讨论】:
-
如果任务开始,然后正在等待一些资源,然后它被中断了怎么办?
-
也许我读错了 javadoc。似乎这意味着线程正在等待任务启动。或者也许我在这里错了。
-
那么,“等待”是否意味着执行线程在我的任务代码中的任何阻塞调用中被阻塞?
标签: java multithreading concurrency