Ich begrüße euch mit einem freundlichen Hallo.
Ich stehe vor folgendem Rätsel:
Wenn ich eine Methode sehr oft hintereinander ausführen möchte und das über eine While-Schleife tue, habe ich weniger Schleifendurchläufe pro Sekunde, als wenn ich das gleiche über einen Timer.scheduleAtFixedRate(new Timertask(),3,3); tue.
Warum ist das so? Ich schreibe mal die zwei Varianten auf:
Hier nun zuerst die langsamere Variante
und jetzt die schnellere Variante
Ich hab es mit der neusten Java VM probiert.
Meine Entwicklungsumgebung ist Eclipse,
und als Betriebssystem nutze ich Windows XP Home SP2.
Ich stehe vor folgendem Rätsel:
Wenn ich eine Methode sehr oft hintereinander ausführen möchte und das über eine While-Schleife tue, habe ich weniger Schleifendurchläufe pro Sekunde, als wenn ich das gleiche über einen Timer.scheduleAtFixedRate(new Timertask(),3,3); tue.
Warum ist das so? Ich schreibe mal die zwei Varianten auf:
Hier nun zuerst die langsamere Variante
Java:
public void init(){
Timer timer = new Timer();
timer.schedule(new TimerTask(){public void run(){loop();}}, 3);
}
public void loop(){
while(true)
run();
}
und jetzt die schnellere Variante
Java:
public void init(){
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() { public void run() {loop();}},3,3);
}
public void loop(){
run();
}
Ich hab es mit der neusten Java VM probiert.
Meine Entwicklungsumgebung ist Eclipse,
und als Betriebssystem nutze ich Windows XP Home SP2.