为什么一个Java线程会阻止在另一个线程中完成的OpenGL渲染?

为什么一个Java线程会阻止在另一个线程中完成的OpenGL渲染?,java,multithreading,opengl,lwjgl,Java,Multithreading,Opengl,Lwjgl,当我尝试在一个线程中执行使用轻量级Java游戏库(LWJGL)的Java代码时,一切正常。然而,当我启动第二个Java线程,它只是不断地打印文本(请参阅下面的文本线程类伪代码),我的OpenGL程序就没有响应了,但文本仍然被打印。没有显示任何错误 public class TextPrinterThread implements Runnable { public void run() { while(true) { System.out.pri

当我尝试在一个线程中执行使用轻量级Java游戏库(LWJGL)的Java代码时,一切正常。然而,当我启动第二个Java线程,它只是不断地打印文本(请参阅下面的文本线程类伪代码),我的OpenGL程序就没有响应了,但文本仍然被打印。没有显示任何错误

 public class TextPrinterThread implements Runnable {
    public void run() {
        while(true) {
            System.out.println("My text");
        }
    }
}

我已经读到OpenGL在多线程等方面存在问题,但是我不尝试在多线程中分离OpenGL作业。我只为OpenGL使用一个线程,另一个线程执行非OpenGL代码。我在网上没有找到任何建议我的问题的原因是什么,我试着改变线程优先级,但没有帮助。任何帮助都将不胜感激。

因为此线程占用CPU


验证:打印后添加睡眠,查看主线程是否恢复

由于此线程占用CPU,请验证:在打印后添加睡眠,查看主线程是否恢复。我认为更改优先级应该可以减少文本打印机线程的CPU使用,因为这并没有帮助我排除了此选项。然而,你的建议100%有效。非常感谢。如果您发布了答案,我将接受您的it。在java中,您永远不会信任线程优先级,这是无法保证的