CountDownLatch(倒数闩)
经常用于监听某些初始化操作,等初始化线程全部执行完毕后,才通知主线程继续工作。
- 即一个线程处于阻塞的状态下,他要收到多少次通知,才能被苏醒,并继续往下执行。
- 注意,只能阻塞 一个线程。
- countDown.countDown() 到了 0,并使得 countDown.await() 苏醒之后,仍旧能进行 countDown.countDown(),并且不会报错,但是 countDown.getCount() 始终为 0。
CyclicBarrier(同步屏障)
场景假设:每个线程代表一个跑步运动员,当所有运动员都准备好,才能一起出发,只要有一个人没有准备好,那么大家都要等待他。
- 注意:阻塞的是每个线程。