Как я могу получить FutureTask для возврата после TimeoutException?
В приведенном ниже коде яm перехватывает TimeoutException через 100 секунд, как и предполагалось. В этот момент я ожидаю, что код выйдет из основного и программа завершится, но он продолжит печатать на консоль. Как получить задание прекратить выполнение после тайм-аута?
private static final ExecutorService THREAD_POOL = Executors.newCachedThreadPool();
private static T timedCall(Callable c, long timeout, TimeUnit timeUnit) throws InterruptedException, ExecutionException, TimeoutException {
FutureTask task = new FutureTask(c);
THREAD_POOL.execute(task);
return task.get(timeout, timeUnit);
}
public static void main(String[] args) {
try {
int returnCode = timedCall(new Callable() {
public Integer call() throws Exception {
for (int i=0; i < 1000000; i++) {
System.out.println(new java.util.Date());
Thread.sleep(1000);
}
return 0;
}
}, 100, TimeUnit.SECONDS);
} catch (Exception e) {
e.printStackTrace();
return;
}
}