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     
  • 相关阅读:
    TensorFlow 一步一步实现卷积神经网络
    TensorFlow 卷积神经网络手写数字识别数据集介绍
    深度学习之激活函数
    使用Keras进行深度学习:(二)CNN讲解及实践
    计算智能(CI)之粒子群优化算法(PSO)(一)
    C# SqlBulkCopy
    Oracle 连接数据库
    C# DataTable转换为Html 用Html的方式预览DataTable的数据
    C# 中文判断
    C# Excel To DataTable
  • 原文地址:https://www.cnblogs.com/liyasong/p/CyclicBarrier.html
Copyright © 2011-2022 走看看