在实践中发生虚假唤醒

时间:2013-01-01 05:53:36

标签: java windows multithreading

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

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

虚假的唤醒现象记录在Java.lang.Object的Java(Java)等待中,但它是我第一次在实践中看到它。 这是Windows或Java中的错误吗?

1 个答案:

答案 0 :(得分:3)

由于它已被记录,因此不能成为错误。