Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java创建BuffereImage冻结程序实例_Java_Multithreading_Lwjgl_Bufferedimage_Freeze - Fatal编程技术网

Java创建BuffereImage冻结程序实例

Java创建BuffereImage冻结程序实例,java,multithreading,lwjgl,bufferedimage,freeze,Java,Multithreading,Lwjgl,Bufferedimage,Freeze,我正在经历一些非常奇怪的事情,我根本不知道是什么原因造成的。这是有问题的代码行: BufferedImage out = new BufferedImage(256, 256, BufferedImage.TYPE_INT_RGB); 调用此函数后,所有线程都会冻结,所有内容都会停止。我试着把它放在自己的线程和主线程中,同样的事情发生了。我正在使用LWJGL3,所以这可能是一个问题,但我不知道它是怎么回事 编辑:在没有LWJGL输入或输出-XstartOnFirstThread的空白项目中不会

我正在经历一些非常奇怪的事情,我根本不知道是什么原因造成的。这是有问题的代码行:

BufferedImage out = new BufferedImage(256, 256, BufferedImage.TYPE_INT_RGB);
调用此函数后,所有线程都会冻结,所有内容都会停止。我试着把它放在自己的线程和主线程中,同样的事情发生了。我正在使用LWJGL3,所以这可能是一个问题,但我不知道它是怎么回事


编辑:在没有LWJGL输入或输出-XstartOnFirstThread的空白项目中不会出现此错误!我找到了解决办法。事实证明,所需要的只是以下JVM参数:
-Djava.awt.headless=true
您还必须确保您没有在主线程中运行它,您必须在初始化GLFW的线程之外运行它


所有这些仅适用于在Mac、Linux和Windows上运行LWJGL而没有此问题的情况。

您如何知道程序停止的地方?你用调试器检查过每个线程的调用堆栈吗?@Radiodef我没有检查过任何调用堆栈,但我有以下代码要调试:
System.out.println(“Before”)
BufferedImage out=新的BufferedImage(256,256,BufferedImage.TYPE\u INT\u RGB)
System.out.println(“之后”)我只在控制台中看到“Before”。接下来,我要做的是使用调试器检查每个线程的调用堆栈,以验证它们确实已冻结以及它们都在哪里。@Radiodef似乎
ColorModel.loadLibraries
是线程停止的地方。在该方法内部,调用了
java.security.AccessController.doPrivileged
。编辑:我甚至尝试创建另一个线程来反复将内存使用情况打印到控制台中,但即使该线程也会锁定。在一个简单的main方法中实例化BuffereImage,而无需添加lwjgl和其他库来构建路径。它自己工作吗?