Java Core
Swing Threading Rules & Graceful Shutdown
Swing-Komponenten sind nicht thread-sicher und müssen zwingend auf dem Event Dispatch Thread (EDT) erzeugt und manipuliert werden. Graceful Shutdown: Beim Schließen des Fensters darf die JVM nicht einfach abgewürgt werden, da im Hintergrund eigene Threads (wie der GameLoop) weiterlaufen. Über einen WindowAdapter muss dem GameLoop mitgeteilt werden, sauber herunterzufahren (thread.join()).
Referenz:
Datei
1. Spielprojekt
· Klasse GameWindow
public static void main(String[] args) {
// Sicheres Anlegen auf dem EDT
SwingUtilities.invokeLater(GameWindow::createAndShowWindow);
}
// Beenden des Hintergrund-Threads beim Schließen des Fensters
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
gameLoop.stop(); // Setzt running=false und wartet per thread.join()
}
});