2011-09-27 70 views
1

我有一个间歇性失败的测试,其中future.get调用在callable中执行finally块之前返回,此时未来被取消。这里是基本的工作流程:future.get在最终在Callable上执行之前返回取消

future.cancel(true);

我看到Callable

抛出的InterrupedException主线程从future.get通话

现在Callable电话finally抓住CancellationException

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

+0

可以发表相关的代码吗? – Nrj

回答

0

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

+0

是的,我认为这是一个错误,因为这种行为没有记录 – Andrew

相关问题