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

标签 java optimization while-loop infinite-loop

这是我的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声明,一切都很好。

所以我的问题是,如何诱导这个 while 循环运行而不必使用 System.out.println线。

注意:我完全理解无限循环是不好的,但也许在游戏或服务器中,无限循环可能是唯一最好的方法。

编辑:

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

最佳答案

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

关于java - 如何让java中的无限循环工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43929330/

相关文章:

php - 在数组内部创建 php json 对象数组

java - JPA Criteria API - 设置连接并从连接实体中获取数据

java - Gson - 关于版本控制的问题

java - 如何捕获通过分布式系统中各个组件传递的事件的时间滞后?

java - Spring 3 Service Dao 层与抽象类问题

c++ - 需要建议以避免更高迭代步骤的死锁

c++ - 更快的 std::insert,或者,如何优化 Instruments 认为速度很慢的调用?

c++ - 在 GLSL 中优化光线追踪着色器

Python 列表字符替换和复制

Python:使用 while 或 for 循环遍历列表