Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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 在实践中会出现虚假唤醒_Java_Windows_Multithreading - Fatal编程技术网

Java 在实践中会出现虚假唤醒

Java 在实践中会出现虚假唤醒,java,windows,multithreading,Java,Windows,Multithreading,在运行Java 1.7.0_09的双四核Windows 2008 64位服务器上进行每秒3000个并发会话和大约300个事务的负载测试期间,我们在实践中观察到两个已确认的虚假唤醒实例,即线程在未收到通知的情况下,在等待超时过期之前退出其wait()方法 在唤醒期间,机器CPU不足20%,内存充足。此外,未观察到过多的垃圾收集。 幸运的是,我们最近引入的自旋锁能够捕获这种情况并继续等待() 伪唤醒现象记录在java.lang.Object wait()的JavaDoc中,但这是我第一次在实践中看到

在运行Java 1.7.0_09的双四核Windows 2008 64位服务器上进行每秒3000个并发会话和大约300个事务的负载测试期间,我们在实践中观察到两个已确认的虚假唤醒实例,即线程在未收到通知的情况下,在等待超时过期之前退出其wait()方法

在唤醒期间,机器CPU不足20%,内存充足。此外,未观察到过多的垃圾收集。 幸运的是,我们最近引入的自旋锁能够捕获这种情况并继续等待()

伪唤醒现象记录在java.lang.Object wait()的JavaDoc中,但这是我第一次在实践中看到它。
这是Windows还是Java中的一个bug?

因为它是有文档记录的,所以它不可能是bug。

好吧,好吧,我只是想分享我的发现,并获得关于哪个操作系统版本的反馈?我这样问是因为,在Windows上几十年的多线程处理中,我从未见过任何来自任何操作系统同步原语(事件、信号量)的虚假唤醒,我假设java运行时使用这些原语来提供“等待”功能。Windows 2008 64位,这也是我第一次在实践中实际看到这种理论现象