我使用的是ExecutorService用於如下連接任務:shutdownNow時與執行服務
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<ApplicationConnection> future = (Future<ApplicationConnection>) executor.submit(new ConnectThread(crf, connoptions));
connection = future.get(300000, TimeUnit.SECONDS);
executor.shutdownNow();
()的調用方法調用.connect()方法(專有API)。這種連接方法會產生各種線程池等。我擔心的是,如果將來超時並殺死執行程序,將來可能通過調用.connect()方法產生的線程也會結束嗎?我知道殺死一個線程也會殺死任何子線程,但這是否遵循相同的邏輯?
如果我正確地理解了你,我現在正在做的事情會留下懸掛的線索,但最終未來將終止並清理自己?包含future.cancel(true)只有在connect()方法可以處理InterruptedException時纔有用? – Greg
@Greg:你不再等待「未來」並不意味着它不再運行。當它結束時,它將像往常一樣清理,但是沒有人真的在等待結果。 –