# Timer - gleichen Task mehrfach planen



## eric (28. Dez 2007)

Hallo Forum,

ich möchte eine Aufgabe geplant durchführen lassen. Ich hab mir also meinen eigenen TimerTask geschieben, den in einen Timer gesteckt. Das geht sehr gut.
Nun will ich aber diesen Task mehrfach am Tag zu definierten Zeiten auführen lassen, bspw. immer 17:30 und 23:00. Also mache ich für jeden Zeitpunkt folgendes:

```
this.timer.scheduleAtFixedRate( task, firstTime, 86400000); // 1000 * 60 * 60 * 24
```
Das geht aber nur für einen Zeitpunkt. Wenn ich den zweiten 'schedulen' will, erhalte ich: _Exception in thread "main" java.lang.IllegalStateException: Task already scheduled or cancelled_. Kann mir jemand einen Tipp geben.

Grüße Eric


----------



## Niki (28. Dez 2007)

Wenn du den selben Task (die selbe Instanz) noch einmal ausführen willst brauchst du einen DummyTask dazwischen:

DummyTask

```
import java.util.TimerTask;

public class DummyTask extends TimerTask {

	private TimerTask tt = null;

	public DummyTask(TimerTask tt) {
		this.tt = tt;
	}

	@Override
	public void run() {
		tt.run();
	}

}
```

eigentlicher Task

```
import java.util.TimerTask;

public class RunnableImpl extends TimerTask {

	public void run() {
		int delay = (int) (Math.random() * 10);
		try {
			Thread.sleep(1000 * delay);
		} catch (InterruptedException ignore) {

		}

	}

}
```

Main

```
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		TimerTask tt = new RunnableImpl();
		
		Timer t = new Timer("scheduler");
		t.schedule(new DummyTask(tt),getDate(12, 30));
		
		t.schedule(new DummyTask(tt), getDate(13, 0));

	}
	
	private static Date getDate(int hour, int min){		
		Calendar cal = Calendar.getInstance();				
		cal.set(Calendar.HOUR_OF_DAY, hour);
		cal.set(Calendar.MINUTE, min);
		
		return cal.getTime();
		
	}

}
```


----------



## eric (28. Dez 2007)

Ich hab zwar selbst ne Lösung, aber deine ist eindeutig eleganter. 
Ich hab mir ne zweite Instanz erzeugt. Da keine Instanzvariablen verwendet werden, ist das keine Problem. Aber ich denke das wird irgendwann zum Problem.

Danke für die klare schnelle Antwort.

Gruß Eric


----------

