如何让 java 中的无限循环工作?

How to get infinite loop in java to work?

这是我在 java 中的代码。

        CameraFrame cf = new CameraFrame();
        while (true) {
            // System.out.println("hello");
            if(cf.cp.play) {
                AppGameContainer app = new AppGameContainer(new Game("Snake"));
                app.setDisplayMode(WIDTH, HEIGHT, false);
                app.setTargetFrameRate(FPS);
                app.setShowFPS(false);
                app.start();
            }
        }

出于某种原因,这在 java 中从未 运行。我确实在某处读到,像 Java 和 C# 这样的编程语言通过不执行此类循环(据说没有任何作用)来优化代码。但是我有来自(slick2d 游戏库)的代码,这里从来没有 运行。但是,如果我输入 System.out.println 语句,一切都很好。

所以我的问题是,如何在不使用 System.out.println 行的情况下将此 while 循环引入 运行。

注意:我完全理解无限循环是不好的,但在游戏或服务器中可能存在这样的情况,无限循环可能是唯一的最佳方式。

编辑:

我更新了代码。 CameraFrame 基本上是另一个打开视频并将其显示在 JFrame 上的线程,cf.cp 是一个 JPanel,cf.cp.play 是一个布尔值,由 CameraFrame 上的 JButton 触发。所以我有一个 JFrame,它有一个 JButton,它应该能够从 slick2d 触发这个新的 window。

因此,如果我对您的理解正确,您正在等待其他线程使 cf.cp.play 变为 true。在不独占处理器的情况下执行此操作的经典方法是让线程休眠,除非您可以控制更改的完成方式(另一个线程),在这种情况下,您最好在某些事情上做一个通知cf.cp.play 的值变为真。