Wie neu zu starten, zu planen, Wann scheduleWithFixedDelay eine exception wirft?

Benutze ich ScheduledExecutorService planen einige Aufgaben, die brauchen, um ausführen regelmäßig.
Ich möchte wissen, ob dieser code funktioniert nach Wiederherstellung der Zeitplan, wenn eine Ausnahme passiert.

ScheduledExecutorService service = Executors.newScheduledThreadPool(1);
this.startMemoryUpdateSchedule(service);//See below method

//Recursive method to handle exception when run schedule task
private void startMemoryUpdateSchedule(ScheduledExecutorService service) {
    ScheduledFuture<?> future = service.scheduleWithFixedDelay(new MemoryUpdateThread(), 1, UPDATE_MEMORY_SCHEDULE, TimeUnit.MINUTES);
    try {
        future.get();
    } catch (ExecutionException e) {
        e.printStackTrace();
        logger.error("Exception thrown for thread",e);
        future.cancel(true);
        this.startMemoryUpdateSchedule(service);
    } catch(Exception e) {
        logger.error("Other exception ",e);
    }
}
  • hey, wenn Sie diesen Aufruf.startMemoryUpdateSchedule(service) aus dem Haupt-thread. Der Haupt-thread muss warten, bis Prozess zu beenden, aber Ihre Funktion wird ausgeführt foreover.der Haupt-thread gehen, um zu schlafen??
  • Parannoy, ich erstelle ein neuen thread für diese Funktion aus dem Haupt-thread.
InformationsquelleAutor Simon Wang | 2012-05-30
Schreibe einen Kommentar