2011-09-27 68 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

相關問題