zoukankan      html  css  js  c++  java
  • Java中CountDownLatch使用初步

    package gj.lang.util.concurrent.countdonwlatch;
    
    import java.util.Random;
    import java.util.concurrent.CountDownLatch;
    
    /**
     * Author: areful
     * Date: 2019/4/24
     */
    public class CountDownLatchSample {
        private static class Player implements Runnable {
            private int id;
            private CountDownLatch beginCountDownLatch;
            private CountDownLatch endCountDownLatch;
    
            private Player(int id, CountDownLatch begin, CountDownLatch end) {
                this.id = id;
                this.beginCountDownLatch = begin;
                this.endCountDownLatch = end;
            }
    
            @Override
            public void run() {
                try {
                    beginCountDownLatch.await();
                    System.out.println("CyclicBarrierSample " + id + "起跑...");
    
                    Thread.sleep(new Random().nextInt(1000));
                    System.out.println("CyclicBarrierSample " + id + " 到达终点");
    
                    endCountDownLatch.countDown();
                    System.out.println("CyclicBarrierSample " + id + "继续干其他事情");
                } catch (InterruptedException ignored) {
                }
            }
        }
    
        public static void main(String[] args) {
            final int PLAYER_NUM = 5;
            CountDownLatch beginCountDownLatch = new CountDownLatch(1);
            CountDownLatch endCountDownLatch = new CountDownLatch(PLAYER_NUM);
    
            for (int i = 0; i < PLAYER_NUM; i++) {
                new Thread(new Player(i, beginCountDownLatch, endCountDownLatch)).start();
            }
    
            try {
                System.out.println("统一起跑");
                beginCountDownLatch.countDown();
    
                endCountDownLatch.await(); //等待所有运动员到达终点
                System.out.println("结果发送到汇报成绩的系统");
            } catch (InterruptedException ignored) {
            }
        }
    }
    

       

    输出结果:

  • 相关阅读:
    vue使用video.js解决m3u8视频播放格式
    小程序索引列表排序
    小程序实现图片上传,预览以及图片base64位处理
    小程序实现综合排序页面布局
    前端学习 html
    Linux Yum仓库介绍及服务端及客户端配置
    Saltstack 常用的模块及API
    KVM 克隆虚拟机
    KVM 虚拟机基本管理及常用命令
    Saltstack 操作目标,正则匹配,及组管理
  • 原文地址:https://www.cnblogs.com/areful/p/10763562.html
Copyright © 2011-2022 走看看