我使用的是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:你不再等待“未来”并不意味着它不再运行。当它结束时,它将像往常一样清理,但是没有人真的在等待结果。 –