【发布时间】:2023-03-06 13:51:01
【问题描述】:
当我尝试在一个线程中执行使用轻量级 Java 游戏库 (LWJGL) 的 Java 代码时,一切正常。但是,当我启动第二个 Java 线程时,它只是不断地打印文本(请参阅下面的文本线程类伪代码),我的 OpenGL 程序变得无响应,但仍然打印了文本。没有显示错误。
public class TextPrinterThread implements Runnable {
public void run() {
while(true) {
System.out.println("My text");
}
}
}
我读到 OpenGL 在多线程 here 和 here 等方面存在问题,但是我不尝试在多个线程中分离 OpenGL 作业。我只为 OpenGL 和其他线程使用一个线程来执行非 OpenGL 代码。我在互联网上没有找到任何建议是什么原因导致我的问题,我尝试更改线程优先级,但没有帮助。任何帮助将不胜感激。
【问题讨论】:
-
因为这个线程占用CPU,验证:打印后加sleep,看主线程是否恢复。
-
我认为更改优先级应该会降低文本打印机线程的 CPU 使用率,因为它没有帮助我排除此选项。但是,您的建议 100% 有效。谢谢你。如果您发布答案,我会接受您的。
-
在 java 中,你永远不会信任线程优先级,它不会得到保证
标签: java multithreading opengl lwjgl