Java-在TimeoutException之后正确取消线程执行

Java-在TimeoutException之后正确取消线程执行,java,multithreading,future,Java,Multithreading,Future,我有一个java程序,它按计划运行,并通过RFC调用从外部源获取一些数据。RFC调用是线程化的,应在60秒后取消。我就是这样做的: Future<String> future = executor.submit(new MyCallable()); try { future.get(60, TimeUnit.SECONDS); } catch (TimeoutException e) { future.cancel(true); } 谢谢你在这方面的任何想法 干杯,

我有一个java程序,它按计划运行,并通过RFC调用从外部源获取一些数据。RFC调用是线程化的,应在60秒后取消。我就是这样做的:

Future<String> future = executor.submit(new MyCallable());
try {
    future.get(60, TimeUnit.SECONDS);
} catch (TimeoutException e) {
    future.cancel(true);
}
谢谢你在这方面的任何想法


干杯,Jooo

我相信在Java中,如果在执行过程中没有实现InterruptedException,就没有办法杀死线程。如果线程正在执行,它只是设置一个标志,由线程来注意它。如果线程正在等待或休眠,它将抛出InterruptedException

当然,不需要在每一行之后进行检查,但是需要花费很长时间来执行的方法负责正确处理中断

终止线程正在其中运行的进程。(例如,呼叫系统出口(int)。)

try {
     future.get(60, TimeUnit.SECONDS);
} catch (TimeoutException e) {
     future.cancel(true);
     if(!future.isDone()){
        System.exit(1);
     }
}