future.get在最终在Callable上执行取消之前返回

时间:2011-09-27 17:10:43

标签: java concurrency future

我有一个间歇性失败的测试,在将来取消之前,在Callable中执行finally块之前返回future.get调用。这是基本的工作流程:

future.cancel(true);

我看到InterrupedException

中抛出了Callable

主要帖子从CancellationException电话

中抓取future.get

现在Callable调用finally

测试在我的笔记本上总是成功的,并且大部分时间都在我们的构建服务器上失败。我的笔记本和构建服务器都运行OpenJDK 1.7。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

cancel()的文档似乎没有指定它等待中断的线程退出。如果你想要这种保证,你必须设置一个监视器或其他一些同步机制,使得取消器可以等待处理器说“我已经完成了我的finally块”。