Loading

CyclicBarrier详解

CyclicBarrier详解

简介

  • 阻塞一组线程,直到某个事件发生.
  • 所有线程必须都到达栅栏位置时,才能继续执行.
  • 使得一定数量的线程反复在栅栏位置汇集.需要等待集合的线程调用await()方法在栅栏处阻塞.
  • 栅栏释放阻塞的线程后会重置以便下一次使用.

核心方法

await()方法

会调用dowait()方法.

  • 若线程不是最后一个到达栅栏的线程,则其处于等待状态.除非:
    • 最后一个线程到达栅栏,唤醒其他等待的线程.
    • 某个参与的线程等待超时.
    • 某个参与线程被中断.
    • 调用了reset()方法,将栅栏设置为初始状态.

异常

  • 若一个线程处于等待状态时,其他线程调用reset(),抛出BrokenBarrierException异常.
  • 任何线程在等待时被中断,其他线程都抛出BrokenBarrierException异常.

nextGeneration()方法

用来释放栅栏并准备下一个栅栏.

  • 唤醒正在栅栏等待的线程.
  • 重置线程计数count.
  • 重置线程所处的年代(generation).
posted @ 2020-06-30 21:30  战五渣渣渣渣渣  阅读(193)  评论(0编辑  收藏  举报