1

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

future.cancel(true);

我看到InterrupedException扔在Callable

主线程CancellationExceptionfuture.get调用中捕获

现在Callable来电了finally

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

4

1 回答 1

0

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

于 2011-09-27T17:17:47.500 回答