Wie bringe ich FutureTask dazu, nach TimeoutException zurückzukehren?

Im folgenden Code wird wie beabsichtigt nach 100 Sekunden eine TimeoutException abgefangen. Zu diesem Zeitpunkt würde ich erwarten, dass der Code von main beendet und das Programm beendet wird, aber weiterhin auf der Konsole gedruckt wird. Wie bringe ich die Aufgabe dazu, nach einer Zeitüberschreitung die Ausführung zu beenden?

private static final ExecutorService THREAD_POOL = Executors.newCachedThreadPool();

private static <T> T timedCall(Callable<T> c, long timeout, TimeUnit timeUnit) throws InterruptedException, ExecutionException, TimeoutException {
    FutureTask<T> task = new FutureTask<T>(c);
    THREAD_POOL.execute(task);
    return task.get(timeout, timeUnit);
}


public static void main(String[] args) {

    try {
        int returnCode = timedCall(new Callable<Integer>() {
            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;
    }


}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage