虚假的唤醒在实践中发生

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

在唤醒的时候,机器的CPU不足20%,并有大量的内存可用。 也没有观察到过多的垃圾收集。 幸运的是,我们最近推出的自旋锁能够捕捉这种情况,并继续wait()

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

由于它被记录,它不能是一个错误。