Wie mache ich einen Timer der alle 2 sekunden aufgerufen wird?

  • Themenstarter Themenstarter Timtrucker
  • Beginndatum Beginndatum
T

Timtrucker

Gast
Hey Leute!
Könnt ihr mir sagen, wie man eine Vernümpftige endlosschleife macht?
und diese dann nach jedem Aufruf der schleife 2 Sekunden angehalten wird?
also wie ein Timer, der immer nach 2 sekunden endlos aufgerufen wird.
Ich brauche das, da ich ein Programm mache, bei dem daten automatisch aktualiesiert werden.
Könnt ihr mir da Weiterhelfen?

lg timtrucker
 
Achja.
habe ich vergessen, der Timer soll parallel zum programm laufen.
Also er soll das komplette programm nicht anhalten, sonder im "hintergrund" einfach parralel laufen.

lg timtrucker
 
Hi Timtrucker,

anstelle einer Endlosschleife würde ich dir grundsätzlich einen Java-Thread empfehlen.

Aber das was du möchtest gibt es quasi schon fertig:
ScheduledExecutorService (Java 2 Platform SE 5.0)
Chad Gallemore: Java Threading - ScheduledExecutorService

lg

Ja habe ich auch gemacht, jedoch hält das ganze Programm dann an 🙁
das will ich ja nicht.
Es soll ja weiter laufen und nur im hintergrund alle 2 sekunden daten aktualiesieren.

lg timtrucker
 
Habs jetzt nicht ausprobiert, sondern nur schnell zusammengeschrieben.

Aber so in der Art würd ich das machen:

Java:
public class MyScheduler extends TimerTask {
	
	private ScheduledExecutorService executor;
	
	public MyScheduler(Date _nextRefresh, long _refreshInterval){
		this.startScheduling(_nextRefresh, _refreshInterval);
	}
	
	public void startScheduling(Date _nextRefresh,  long _refreshInterval){
		this.executor = Executors.newScheduledThreadPool(1);
		this.executor.scheduleAtFixedRate(this, _nextRefresh, _refreshInterval);	
	}
	
	public void stopScheduling(){
		//stop the executor
		this.cancel();
		this.executor.cancel();
	}

	@Override
	public void run() {
                // ... do something
	}
}

Natürlich noch dir run() überschreiben.

lg

EDIT: Timer geht natürlich genauso
 
Zuletzt bearbeitet:

Zurück
Oben