L
LurchiDerLurch
Gast
Hallo
Mein Problem bezieht sich nicht direkt auf das Synchronisieren von Threads.
Zuerst mal der Hintergrund: Ich hab ein Programm mit Kollisionserkennung und bewegten Objekten. Die Klasse Main startet hierfür einen Thread (20ms pro Durchlauf), der sich laufend um Kollisionserkennung, Bewegung und Zeichnen der Objekte kümmert.
Die Objekte bieten die Methode setPos(x,y), welche vom Main Thread laufend verwendet wird. (die Objekte bewegen sich ja schließlich die ganze/meiste Zeit)
Jetzt kommt aber mein Problem:
Ich hab zu Testzwecken einen Maus Event Handler eingebaut, mit dem ich die Position eines Objekts verändern kann. Er verwendet also auch wieder die setPos(x,y) Methode.
Jetzt kann es aber vorkommen, dass die Positionsänderung nicht funktionieren will, weil ja der Main Thread ununterbrochen reinfunkt. Mittels System.out.println("...") hab ich mir anzeigen lassen, wann der Main Thread bzw. der Event Handler die setPos(x, y) Methode verwenden.
-> Der Event Handler genau 3 mal so schnell. Trotzdem setzt sich der Main Thread durch.
Wenn man jetzt bedenkt, dass ich vielleicht später das Objekt (zB nicht über den Event Handler) an eine andere Position schieben will, möchte ich sicher gehen, dass das einwandfrei funktioniert!
Also: Bevor ich mir jetzt irgendetwas abenteuerliches ausdenke, um das Problem zu lösen, wollte ich wissen, wie man das normalerweise in der Spieleprogrammierung handhabt. Muss das irgendwie in verschiedenen Threads laufen?
Ich wäre um jede Hifle dankbar
Lurchi
Mein Problem bezieht sich nicht direkt auf das Synchronisieren von Threads.
Zuerst mal der Hintergrund: Ich hab ein Programm mit Kollisionserkennung und bewegten Objekten. Die Klasse Main startet hierfür einen Thread (20ms pro Durchlauf), der sich laufend um Kollisionserkennung, Bewegung und Zeichnen der Objekte kümmert.
Die Objekte bieten die Methode setPos(x,y), welche vom Main Thread laufend verwendet wird. (die Objekte bewegen sich ja schließlich die ganze/meiste Zeit)
Jetzt kommt aber mein Problem:
Ich hab zu Testzwecken einen Maus Event Handler eingebaut, mit dem ich die Position eines Objekts verändern kann. Er verwendet also auch wieder die setPos(x,y) Methode.
Jetzt kann es aber vorkommen, dass die Positionsänderung nicht funktionieren will, weil ja der Main Thread ununterbrochen reinfunkt. Mittels System.out.println("...") hab ich mir anzeigen lassen, wann der Main Thread bzw. der Event Handler die setPos(x, y) Methode verwenden.
-> Der Event Handler genau 3 mal so schnell. Trotzdem setzt sich der Main Thread durch.
Wenn man jetzt bedenkt, dass ich vielleicht später das Objekt (zB nicht über den Event Handler) an eine andere Position schieben will, möchte ich sicher gehen, dass das einwandfrei funktioniert!
Also: Bevor ich mir jetzt irgendetwas abenteuerliches ausdenke, um das Problem zu lösen, wollte ich wissen, wie man das normalerweise in der Spieleprogrammierung handhabt. Muss das irgendwie in verschiedenen Threads laufen?
Ich wäre um jede Hifle dankbar
Lurchi