CyclicBarrier详解

Posted truestoriesavici01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CyclicBarrier详解相关的知识,希望对你有一定的参考价值。

CyclicBarrier详解

简介

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

核心方法

await()方法

会调用dowait()方法.

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

异常

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

nextGeneration()方法

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

  • 唤醒正在栅栏等待的线程.
  • 重置线程计数count.
  • 重置线程所处的年代(generation).

以上是关于CyclicBarrier详解的主要内容,如果未能解决你的问题,请参考以下文章

CyclicBarrier详解

并发包下常见的同步工具类详解(CountDownLatch,CyclicBarrier,Semaphore)

举例详解 java.util.concurrent 并发包 4 种常见类

举例详解 java.util.concurrent 并发包 4 种常见类

(转) Java中的负数及基本类型的转型详解

详解Android WebView加载html片段