K
Katharsas
Gast
Hey Leute : ]
Programmiere grad ein kleines 2D-Spiel. Die Hauptschleife (run Methode) ist in einer Klasse implementiert, die von TimerTask erbt, und wird von einem java.util.Timer Objekt in festen Intervallen ausgeführt (siehe Timer (Java Platform SE 7 ) ).
Laut Dokumentation (wenn ich das richtig verstanden habe) hab ich dann einen Thread, der meine Run-Methode hintereinander ausführt.
Das passiert aber nicht. Wenn meine run()-Methode innerhalb des Zeitintervalls nicht fertig ausgeführt wird, wird parrallel die Methode erneut gestartet, und nicht auf das Ende des ersten "runs" gewartet. Weiß jemand von euch woran das liegt, und wieso es in der Doku anders steht?
Klar, ich könnte jetzt einen Flag setzen, der prüft, ob run noch läuft. Aber das sollte ich erstens gar nicht müssen, und zweitens summieren sich die Flags mittlerweile (game paused? gui build? new game started ?), was in unschöne if-Konstruktionen ausartet, da hätte ich ungern noch eine.
Weiß jemand was zu dem Thema?
Würde mich echt freuen, und Danke schon mal!
Mfg, Katharsas
Programmiere grad ein kleines 2D-Spiel. Die Hauptschleife (run Methode) ist in einer Klasse implementiert, die von TimerTask erbt, und wird von einem java.util.Timer Objekt in festen Intervallen ausgeführt (siehe Timer (Java Platform SE 7 ) ).
Laut Dokumentation (wenn ich das richtig verstanden habe) hab ich dann einen Thread, der meine Run-Methode hintereinander ausführt.
Corresponding to each Timer object is a single background thread that is used to execute all of the timer's tasks, sequentially. Timer tasks should complete quickly. If a timer task takes excessive time to complete, it "hogs" the timer's task execution thread. This can, in turn, delay the execution of subsequent tasks, which may "bunch up" and execute in rapid succession when (and if) the offending task finally completes.
Das passiert aber nicht. Wenn meine run()-Methode innerhalb des Zeitintervalls nicht fertig ausgeführt wird, wird parrallel die Methode erneut gestartet, und nicht auf das Ende des ersten "runs" gewartet. Weiß jemand von euch woran das liegt, und wieso es in der Doku anders steht?
Klar, ich könnte jetzt einen Flag setzen, der prüft, ob run noch läuft. Aber das sollte ich erstens gar nicht müssen, und zweitens summieren sich die Flags mittlerweile (game paused? gui build? new game started ?), was in unschöne if-Konstruktionen ausartet, da hätte ich ungern noch eine.
Weiß jemand was zu dem Thema?
Würde mich echt freuen, und Danke schon mal!
Mfg, Katharsas