Keller-Dev Docs · Java & Hytale

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()
    }
});
#swing #edt #thread-safety #window-listener #lifecycle
Bearbeiten