首页 > 其他分享 >CountDownLatch demo演示裁判和选手赛跑

CountDownLatch demo演示裁判和选手赛跑

时间:2022-08-23 14:01:29浏览次数:62  
标签:index 赛跑 end demo 选手 CountDownLatch com final

# CountDownLatch demo演示裁判和选手赛跑
package com.example.core.mydemo;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * // 一个CountDouwnLatch实例是不能重复使用的,也就是说它是一次性的,锁一经被打开就不能再关闭使用了,如果想重复使用,请考虑使用CyclicBarrier。
 * 参考:https://www.cnblogs.com/ningxu/p/3372611.html
 * https://www.cnblogs.com/ningxu/p/3372502.html
 * https://www.cnblogs.com/ningxu/p/3372599.html
 */
public class CountDownLatchTest2 {
    // 模拟了100米赛跑,10名选手已经准备就绪,只等裁判一声令下。当所有人都到达终点时,比赛结束。
    public static void main(String[] args) throws InterruptedException {

        // 开始的倒数锁
        final CountDownLatch begin = new CountDownLatch(1);

        // 结束的倒数锁
        final CountDownLatch end = new CountDownLatch(10);

        // 十名选手
        final ExecutorService exec = Executors.newFixedThreadPool(10);

        for (int index = 0; index < 10; index++) {
            final int NO = index + 1;
            Runnable run = new Runnable() {
                public void run() {
                    try {
                        // 如果当前计数为零,则此方法立即返回。
                        // 等待
                        begin.await();
                        Thread.sleep((long) (Math.random() * 10000));
                        System.out.println("No." + NO + " arrived");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } finally {
                        // 每个选手到达终点时,end就减一
                        end.countDown();
                    }
                }
            };
            exec.submit(run);
        }
        System.out.println("Game Start");
        // begin减一,开始游戏
        begin.countDown();
        // 等待end变为0,即所有选手到达终点
        end.await();
        System.out.println("Game Over");
        exec.shutdown();
    }
}

 

标签:index,赛跑,end,demo,选手,CountDownLatch,com,final
From: https://www.cnblogs.com/oktokeep/p/16615890.html

相关文章

  • CountDownLatch demo演示数据分片多线程处理
    #CountDownLatchdemo演示数据分片多线程处理packagecom.example.core.mydemo;importorg.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import......
  • Javascript日期、城市选择器(demo)
    1<htmlxmlns="http://www.w3.org/1999/xhtml">2<head>3<title>精美js日期选择器,js省市选择器-何问起</title>4<linktype="text/css"rel="Stylesheet"hre......
  • golang 查询 ES 最简单的 demo
    分页多条件查询ESfuncTestESQueryDemo(){//ESSDK教程:https://www.yisu.com/zixun/694102.html query:=elastic.NewBoolQuery().Must......
  • 控制台C#ATM DEMO
    主要运行结果:代码:1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.IO;6usingSyste......
  • CountDownLatch
    CountDownLatchCountDownLatch是一种通用的同步工具CountDownLatch内部的实现主要是依靠AQS的共享模式。当一个线程把CountDownLatch初始化了一个count之后,其他的线程......
  • ClickHouse 本地Docker版搭建及Go链接体验Demo
    1,Win10用Docker启动单机版本ClickHouseWin10上用WSL搭建Docker环境部署就不讲了,直接上ClickHouse的镜像部署;找到官方Docker镜像库,搜索选中:clickhouse/clickhouse-se......
  • 深度学习基础课:“判断性别”Demo需求分析和初步设计(上)
    大家好~我开设了“深度学习基础班”的线上课程,带领同学从0开始学习全连接和卷积神经网络,进行数学推导,并且实现可以运行的Demo程序线上课程资料:本节课录像回放扫码加QQ群......
  • jQuery Easy-PDF: Base64 PDF Viewer Demo
    https://www.jqueryscript.net/other/Base64-PDF-Viewer-Easy-PDF.html<!doctypehtml><html><head><metacharset="utf-8"><metahttp-equiv="X-UA-Compatible"con......
  • vue 调用摄像头 Demo2
    代码html<videoid="videoCamera":width="videoWidth":height="videoHeight"autoplay></video><canvasstyle="display:none"id="canvasCamera":width="......
  • HTML 引用 tracking.js 调取摄像头取人脸 Demo
    <!doctypehtml><html><head><metacharset="utf-8"><title>基于tracking的取人脸</title><scriptsrc="static/js/util/jquery.min.js"></script>......