码迷,mamicode.com
首页 > 其他好文 > 详细

CyclicBarrier详解

时间:2020-06-30 22:14:57      阅读:42      评论:0      收藏:0      [点我收藏+]

标签:reset   exce   cep   中断   res   设置   一个   exception   释放   

CyclicBarrier详解

简介

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

核心方法

await()方法

会调用dowait()方法.

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

异常

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

nextGeneration()方法

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

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

CyclicBarrier详解

标签:reset   exce   cep   中断   res   设置   一个   exception   释放   

原文地址:https://www.cnblogs.com/truestoriesavici01/p/13216183.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!