这是我的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/