private static void run() {
        while (!finished) {
            // Always call Window.update(), all the time
            Display.update();
            if (Display.isCloseRequested()) {
                // Check for O/S close requests
                finished = true;
            } else if (Display.isActive()) {
                // The window is in the foreground, so we should play the game
                logic();
                render();
                Display.sync(FRAMERATE);
            } else {
                // The window is not in the foreground, so we can allow other stuff to run and
                // infrequently update
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                }
                logic();
                if (Display.isVisible() || Display.isDirty()) {
                    // Only bother rendering if the window is visible or dirty
                    render();
                }
            }
        }
    }