TimerTask und Schedule Problem

DragQueenMum

Grünschnabel
Hallo,

Ich habe ein Problem in folgendem Codestück. Es soll alle 100ms die Systemzeit (nur zu Kontrollzwecken) auf die Konsole geworfen werden, was jedoch nicht hinhaut, d.h. es stehen auf der Konsole dann nicht Werte, die immer um 100 größer werden, sondern es variiert um bis zu +-50ms (unter Windows). Unter Ubuntu haut das Ganze nicht schlecht (+-1 ms) hin. Leider soll die App jedoch lediglich unter Windows verwendet werden. Wo liegt hier der Hund begraben?
--> Ich hab mir gedacht evtl. der Garbage Collector, aber wenn er es ist, dann bringt mir das gar nichts, da man ihn ja nicht ausschalten kann.


Code:
import java.util.Timer;
import java.util.TimerTask;

public class schedtest extends TimerTask
{
	public void run() 
	{
		System.out.println(System.currentTimeMillis());
	}
}

class myrun 
{
	public static void main(String[] args) 
	{
		schedtest sch = new schedtest();
		Timer t = new Timer();
		t.scheduleAtFixedRate(sch,  1000, 100);
	}
}

mit bestem Dank im Voraus und freundlichen Grüßen
DQM
 
Wie die Doku schon sagt:
This class does not offer real-time guarantees: it schedules tasks using the Object.wait(long) method.

Zu der Methode kann man dann weiteres lesen....

Ich kann mir recht gut vorstellen dass das bei Linux Systemen sehr gut funktioniert, da das Scheduling hier im allgemeinen deutlich besser funktioniert als bei Windows.
 
OK, danke erstmal, das bestätigt meine Vermutung über die Real-Time Fähigkeit dieser Klasse. Wie kann ich das Problem umgehen? Ich hab irgendwas von der Quartz API gelesen, bin aber auch hier eher wenig zuversichtlich

lg
DQM
 
Zurück