zoukankan      html  css  js  c++  java
  • CyclicBarrier

    CyclicBarrier基本功能

      CyclicBarrier 允许一组线程,全部等待彼此都到达共同的屏障点,然后同时执行下一项操作。在某一个线程未到达之前,这些线程必须彼此等待。等待数量满足parties 值以后,执行CyclicBarrier 构造时设定的方法。也可以不传后续方法,那么等待数量满足后,不执行预定义的操作。

    常用方法

      CyclicBarrier(int parties, Runnable barrierAction) 构造方法。创建一个新的 CyclicBarrier ,当给定数量的线程(线程)等待时,它将跳闸,当屏障跳闸时执行给定的屏障动作,由最后一个进入屏障的线程执行。 

      await()方法。 如果当前线程不是最后一个线程,那么它将进入休眠状态,知道执行await方法的线程到达parties 的数量,或者当前线程被打断。如果当前线程是要到达的最后一个线程,并且在构造函数中提供非空障碍操作,则当前线程在允许其他线程继续之前运行该动作。

      await(long timeout, TimeUnit unit)方法同上,设置一个超时时间,超过时间后,结束等待。抛出TimeoutException

    代码示例

     1     public static void main(String[] args) {
     2         CyclicBarrier barrier = new CyclicBarrier(20,()->{System.out.println("满人发车");});
     3 //        CyclicBarrier barrier = new CyclicBarrier(20, new Runnable() {
     4 //            
     5 //            @Override
     6 //            public void run() {
     7 //                System.out.println("满人发车");
     8 //                
     9 //            }
    10 //        });
    11                 
    12             
    13         for (int i = 0; i < 101; i++) {
    14             new Thread(()->{
    15                 try {
    16 //                    barrier.await(1,TimeUnit.SECONDS);
    17                     barrier.await();
    18                 } catch (Exception e) {
    19                     e.printStackTrace();
    20                 }
    21             }).start();
    22         }
    23     }
    24     
    25     
  • 相关阅读:
    宏定义define和const的区别
    C++11新特性(1)
    TCP协议
    sql查询 不等于的坑null
    To B市场品牌实战课 用产品故事引爆市场
    Tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中
    极客时间返现小程序,全网最优惠返现最多
    分布式数据库,从功能特性到运行机制,讲透本质
    生财有术知识星球整理
    ff
  • 原文地址:https://www.cnblogs.com/liyasong/p/CyclicBarrier.html
Copyright © 2011-2022 走看看