0
我想建立一個簡單的測試用例來發送給IBM,試圖解決this issue如何殺死提交的贖回做uninterrupible IO不會返回
我認爲這將是簡單的蠱惑一個JUnit測試用例或一個主要的應用程序,它會調用並顯示MQ調用從未返回。我認爲我會使用Executor服務,將我的MQ調用包裝在Callable中,並使用Future.get()以指定的超時間隔將其提交給執行程序服務。
可以肯定的是,調用超時,但應用程序不會死亡。如果我使用Assert.fail()或捕獲超時異常,它不會發生,儘管超時異常的堆棧跟蹤會打印。我只能通過外部或通過調用System.exit()來殺死程序。我寧願不做。有沒有辦法在java.util.concurrent包的框架內殺死線程?
This issue提供了一個解決方案,但需要提醒的
只要你不要在你的任務
使不間斷阻塞調用但是,這是我在做什麼。有沒有辦法殺死一個能夠從內部調用不間斷I/O的程序?
你認爲什麼I/O是不間斷的? I/O操作可能會中斷,但它們會以IOException而不是InterruptedException來表示中斷。 – Raedwald
@Rededwald - 對Websphere MQ的異步調用。在我的第一個鏈接。閱讀關於java.util.concurrent.ExecutorService.shutdownNow()的文檔。他們特別提到不能被打斷的IO。 –