2017-04-12 22 views
0

Ich suche nach einer Möglichkeit, eine Aufgabe nach einiger Zeit zu planen, aber ich muss in der Lage sein, die Aufgabe zu verzögern, wenn etwas passiert. Zum BeispielPlanen einer Aufgabe nach Inaktivität (aktualisierbar)

myMethod() { 
    some code... 

    new Timer().schedule(new TimerTask(){ 
      @Override 
      public void run(){ 
       LOGGER.info("close connexion"); 
      } 
     },1000); 

} 

Ich brauche die Aufgabe in "run" neu zu planen, wenn ich in myMethod wieder kommen(). Wie zu tun?

+0

Verschieben Sie es in einer separaten Methode und rufen Sie die Methode auf? – XtremeBaumer

+0

Verwenden Sie einen 'ScheduledExecutorService' anstelle einer' TimerTask'. Sie können die 'ScheduledFuture' verwenden, die Sie von' schedule() 'zurückerhalten, um die Aufgabe abzubrechen und neu zu planen, wann immer Sie sie verzögern möchten. – azurefrog

Antwort

0

Lösung # 1

Bitte bei ScheduledExecutorService sehen, die von Java 1.5 Es gibt Ihre Methode scheduleWithFixedDelay verfügbar ist - so es erneut Pläne Ihre Aufgabe erst nach Erfüllung. Eine weitere Möglichkeit zum Wieder Zeitplan Aufgabe (mit schedule Methode) direkt am Ende Ihrer Methode

Lösung # 2 - in der Nähe der gleiche Signatur von Methoden besteht im Frühjahr TaskScheduler, aber man kann es mit Hilfe von kommentierten Methode tun von Dienstleistungen.

Verwandte Themen