CountDownLatch的工作流程:
CountDownLatch的工作流程

1.通过CountDownLatch(int count)构造器给sync同步器的state赋值。
2.每调countDown一次state数值-1,直到state为0时唤醒等待队列中head后的第一个线程。
3.没调await方法一次都会去判断state是不是为0,当为0时直接执行,不为0时排队等待,直到被park唤醒。
问题一:为什么使用共享锁而不用独占锁?
独占锁只有在释放资源时才会唤醒head节点的下一个node,如果使用独占锁调用await方法的线程只会执行一个,而共享锁在自身被唤醒得到资源之后会自动去唤醒head的下一个node,通过不断自动唤醒下一个node来达到唤醒所有调用await方法的线程。

相关文章:

  • 2021-04-18
  • 2021-12-03
猜你喜欢
  • 2021-12-30
  • 2021-09-09
  • 2022-02-11
  • 2021-12-02
  • 2021-10-28
  • 2021-12-12
  • 2021-07-31
相关资源
相似解决方案