CountDownLatch是否受到虚假唤醒的影响?

Fid*_*del 8 java multithreading countdownlatch

并发管理机制(如wait/notify和lock/condition)似乎受到虚假唤醒的影响.开发人员通过重新检查条件确实已经改变来满足那些意外的唤醒.

在CountDownLatch中,虚假的唤醒是一个问题吗?

Sot*_*lis 13

的javadoc的CountDownLatch#await()状态

如果当前计数大于零,则当前线程将被禁用以进行线程调度,并且在发生以下两种情况之一之前处于休眠状态:

  • 由于countDown()方法的调用,计数达到零; 要么
  • 其他一些线程会中断当前线程.

休眠意味着该方法不会返回.换句话说,虽然可能发生虚假唤醒,但它不会导致await方法返回.

您可以查看实现,看看它是如何完成的,但是,简而言之,它是循环和"等待"(通过LockSuport#parkObject#wait受到虚假唤醒影响)的典型技巧,直到满足条件.

当涉及到CountDownLatch,虚假的唤醒是一个问题吗?

没有.