@Override
    public void run() {
        if (listener == null) {
            throw new IllegalStateException(
                "SystemListener is not set on context!" + "Must set with JmeContext.setSystemListener()."
            );
        }

        LOGGER.log(Level.FINE, "Using LWJGL {0}", Version.getVersion());

        if (!initInThread()) {
            LOGGER.log(Level.SEVERE, "Display initialization failed. Cannot continue.");
            return;
        }

        while (true) {
            runLoop();

            if (needClose.get()) {
                break;
            }

            if (glfwWindowShouldClose(window)) {
                listener.requestClose(false);
            }
        }

        deinitInThread();
    }
De-initialize in the OpenGL thread.
jme3-lwjgl3/src/main/java/com/jme3/system/lwjgl/LwjglWindow.java