5

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

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

虚假唤醒现象记录在 java.lang.Object wait() 的 JavaDoc 中,但这是我第一次在实践中真正看到它。这是 Windows 还是 Java 中的错误?

4

1 回答 1

3

由于它已记录在案,因此它不能是错误。

于 2013-01-01T05:56:01.473 回答