mehrere (gleiche) Timertasks gleichzeitig abarbeiten

  • Hallo!

    Ich würde gerne immer wenn ein bestimmtes Event auftritt, um sagen wir 5 Minuten verzögert einen TimerTask starten. Mein Problem dabei ist, dass immer der als letzter gestartete Task den vorherigen anscheinend abbricht. Ich würde aber gerne alle parallel ablaufen lassen. Muss ich da irgendwas spezielles beachten? Oder geht das überhaupt nicht?

    Jetzt schon mal einen großen Dank für die Hilfe!

    falls es hilft, hier ein kleiner Code-Auszug:

    Timer timer = new Timer();
    Calendar kEvent = Calendar.getInstance();

    public void isEvent(Event e) {
    this.kEvent = Calendar.getInstance();
    kEvent.setTimeInMillis(kEvent.getTimeInMillis()+ 60000);
    Date dt = new Date();
    dt = kEvent.getTime();
    timer.schedule(new checkK(), dt);
    }

    class checkK extends TimerTask{
    public void run(){
    long m = kEvent.getTimeInMillis();
    ...
    try{
    ...
    timer.cancel();
    timer = new Timer();
    }
    catch(Exception e){
    ...
    }
    }
    }

  • Ich hab noch nie mit Timern in Java gearbeitet, aber ich nehm an die Methode "run" ist mit "onTimer()" aus der WINAPI ident. Von daher fällt mir auf, dass der Timer global ist und du den aktuellen Event immer mit cancel() abbrichst und neu initialisierst. Als Lösung könntest du ja ein Array, oder eine Liste an Timer-Instanzen bereitstellen, und neue Events einfach durch einen neuen Timer starten.

    640K ought to be enough for anybody. :eek2:

  • Welche Timer sind denn überahupt gemeint/genutzt ?
    java.util.Timer ?
    Quartz ?
    Eigene Timer Klasse ?

    [Edit]
    Der Code sieht stark nach Java.util.Timer aus, diese Angabe hätte trotzdem ned geschadet
    [/Edit]

    Meine Empfehlung: Quartz verwenden :)


    Trading for a living [equities,futures,forex]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!