# zyklisch Bsp. 1x pro Tag - morgens Task ausführen



## christophersn (12. Apr 2005)

Hi,
was bietet sich am besten für eine zyklische Abarbeitung einer auszuführenden Aufgabe an?
TimerTask ist bekannt, allerdings dabei das Problem, dass ab dem Startzeitpunkt eine Stoppuhr läuft und nicht zu einem vorgegebenen Zeitpunkt die Aufgabe ausgeführt wird. 
Danke für die Tipps.
lg


----------



## DP (12. Apr 2005)

unter windows kannste zum zeitpunkt x deine applikation ausführen lassen...


----------



## christophersn (12. Apr 2005)

in java? --> sollte aber unter linux auch laufen!
meinst Du mit "unter windows" die funktion zum aufrufen einer applikation: Geplante Tasks?
Ich suche eher nach einer Möglichkeit, dies in Java zu implementieren!


----------



## DP (12. Apr 2005)

jou, das meinte ich... kannst dir aber auch einen thread basteln, der bei uhrzeit x entsprechend reagiert...


----------



## semi (12. Apr 2005)

christophersn hat gesagt.:
			
		

> Hi,
> was bietet sich am besten für eine zyklische Abarbeitung einer auszuführenden Aufgabe an?
> TimerTask ist bekannt, allerdings dabei das Problem, dass ab dem Startzeitpunkt eine Stoppuhr läuft und nicht zu einem vorgegebenen Zeitpunkt die Aufgabe ausgeführt wird.
> Danke für die Tipps.
> lg


Schau Dir die Methoden von Timer noch mal an. Es gibt für alle Fälle eine Methode.


----------



## christophersn (13. Apr 2005)

bei meiner Timer-Klasse - Standard API - finde ich keine Methode, die etwas in die Richtung unterstützt! Lediglich in der TimerTask Klasse gäbe es die Möglichkeit mittels Date-Objekt.
Bitte um Aufklärung!
thx


----------



## Sky (13. Apr 2005)

christophersn hat gesagt.:
			
		

> bei meiner Timer-Klasse - Standard API - finde ich keine Methode, die etwas in die Richtung unterstützt! Lediglich in der TimerTask Klasse gäbe es die Möglichkeit mittels Date-Objekt.
> Bitte um Aufklärung!
> thx


Du bist doch auf dem richtigem Weg... wobei möchtest Du nun noch aufgeklärt werden??


----------



## christophersn (13. Apr 2005)

Das Problem beim Date-Objekt ist, dass die Methode run() aus  TimerTask, bei bereits abgelaufener Zeit, im vorgegebenen Intervall "nachgeholt" wird. d.h. ich muss genau wissen, ab wann ich diese Aufgabe durchführen lassen will!

Bsp. Ich möchte ab 8 Uhr morgens, alle 5 Minuten "irgendwas" machen. Wenn ich nun um 13 Uhr Mittag das Programm starte, werden alle vergangenen und noch nicht stattgefundenen Intervalle nachgeholt, also 60 mal!

Wie kann ich das verhindern?


----------



## semi (13. Apr 2005)

Du legst das Startdatum/zeit fest und beim Ausführen des Tasks
startest Du es erneut, mit der gleichen Uhrzeit + 5 Minuten.
	
	
	
	





```
...
TimerTask task = new TimerTask() {
  public void run()
  {
    startzeit.set(Calendar.MINUTE, startzeit.get(Calendar.MINUTE)+5);
    timer.schedule(this, startzeit.getTime());
    doTheJob();
  }
};

timer.schedule(task, startzeit.getTime()); // startzeit ist ein Calendar-Objekt
...
```


----------



## Sky (13. Apr 2005)

Zusätzlich könnte Dir eine Abfrage helfen, die in etwa so aussieht:

```
WENN aktuelleZeit vor 8 Uhr
DANN startzeit gleich 8 Uhr
SONST startzeit = aktuelleZeit + 5 Minuten
```


----------



## christophersn (13. Apr 2005)

semi danke! 

bin aber darauf gekommen, dass ich ohnehin nur 1x pro Tag diese Aufgabe ausführen muss, kann also auch anders erfolgen!

was mich aber noch interessiert:
kann ich dieses Calendar Objekt selbst mit Werten füllen oder wird das beim anlegen automatisch aus der Systemzeit erzeugt?


----------



## christophersn (13. Apr 2005)

Calendar ist protected!? Kann nicht instanziert werden!
help


----------



## bygones (13. Apr 2005)

christophersn hat gesagt.:
			
		

> Calendar ist protected!? Kann nicht instanziert werden!
> help


http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html einfach mal lesen....


----------



## Bleiglanz (13. Apr 2005)

willst du wirklich ein java Programm durchlaufen lassen und einmal am tag aufwecken?

kannst du nicht die Fähigkeiten des Betriebssystems nutzen (Cron, Scripting Host, usw.) um ein bestimmtes java programm einfach "regelmässig" zu starten??


----------



## christophersn (13. Apr 2005)

@bleiglanz: will das ganze eher direkt in java realisieren

@deathbyaclown: thx, war einfach mal wieder zu faul zum lesen! .getInstance(); hilft mir da schon sehr weiter! lg


----------

