我有一个间歇性失败的测试,在将来取消之前,在Callable中执行finally块之前返回future.get调用。这是基本的工作流程:
future.cancel(true);
我看到InterrupedException
Callable
主要帖子从CancellationException
电话
future.get
现在Callable
调用finally
。
测试在我的笔记本上总是成功的,并且大部分时间都在我们的构建服务器上失败。我的笔记本和构建服务器都运行OpenJDK 1.7。有什么想法吗?
答案 0 :(得分:0)
cancel()
的文档似乎没有指定它等待中断的线程退出。如果你想要这种保证,你必须设置一个监视器或其他一些同步机制,使得取消器可以等待处理器说“我已经完成了我的finally块”。