Hallo,
ich bin mit ein paar Studienkollegen dabei ein Spiel in Java zu schreiben mit LWJGL, eigener Physik, Netzwerk...
Wir wollten jetzt den Rendervorgang auslagern in einen eigenen Thread, damit die physik so gut wies geht durchlaufen kann.
Dafür implementiert der Renderer das interface Runnable, und jedesmal wenn die Physik-Engine meint, dass man neuzeichnen müsste (natürlich erst wenn der alte Thread fertig ist) wird über (new Thread(renderer)).start() das ganze aufgerufen.
Komisch ist nun: bei mir (Ubuntu Gutsy 32 bit, Intel Core 2 Duo) läuft die Version mit threads deutlich ruckeliger als wenn man einfach nur renderer.run() aufruft, und netterweise hört es nach einer weile auf zu rendern, die physik läuft weiter. Bei unseren Mac-Nutzern allerdings wird das ganze schneller mit threads und funktioniert wunderbar.
Mache ich da irgendetwas falsch, oder ist Java überfordert mehrere tausende male Threads anzulegen?
Vielen Dank schonmal
Carsten
ich bin mit ein paar Studienkollegen dabei ein Spiel in Java zu schreiben mit LWJGL, eigener Physik, Netzwerk...
Wir wollten jetzt den Rendervorgang auslagern in einen eigenen Thread, damit die physik so gut wies geht durchlaufen kann.
Dafür implementiert der Renderer das interface Runnable, und jedesmal wenn die Physik-Engine meint, dass man neuzeichnen müsste (natürlich erst wenn der alte Thread fertig ist) wird über (new Thread(renderer)).start() das ganze aufgerufen.
Komisch ist nun: bei mir (Ubuntu Gutsy 32 bit, Intel Core 2 Duo) läuft die Version mit threads deutlich ruckeliger als wenn man einfach nur renderer.run() aufruft, und netterweise hört es nach einer weile auf zu rendern, die physik läuft weiter. Bei unseren Mac-Nutzern allerdings wird das ganze schneller mit threads und funktioniert wunderbar.
Mache ich da irgendetwas falsch, oder ist Java überfordert mehrere tausende male Threads anzulegen?
Vielen Dank schonmal
Carsten