博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CountDownLatch示例
阅读量:6907 次
发布时间:2019-06-27

本文共 1532 字,大约阅读时间需要 5 分钟。

hot3.png

CountDownLatch是一种通过计数实现的线程安全:只有当CountDownLatch的值变为0的时候,await线程才会执行。其他线程调用countDown方法之后并不会阻塞,可以执行其他业务。

package com.vincent.juc;import java.util.Random;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;/** * Vincent 创建于 2016/6/1. */public class CountDownLatchDemo {    public static void main(String[] args) throws InterruptedException {        final CountDownLatch countDownLatch=new CountDownLatch(5);        final Random random=new Random();        ExecutorService threadPool = Executors.newCachedThreadPool();        for(int i=0;i<5;i++){            threadPool.execute(new Runnable() {                @Override                public void run() {                    try {                        int t = random.nextInt(10);                        TimeUnit.SECONDS.sleep(t+1);                        long id = Thread.currentThread().getId();                        System.out.println("线程"+id+"执行结束");                        countDownLatch.countDown();                        System.out.println(id+"做别的事去了");                    } catch (Exception e) {                        e.printStackTrace();                    }                }            });        }        System.out.println("主线程开始阻塞");        countDownLatch.await();        System.out.println("主线程开始执行");    }}

输出如下:

主线程开始阻塞线程16执行结束16做别的事去了线程14执行结束14做别的事去了线程13执行结束13做别的事去了线程12执行结束12做别的事去了线程15执行结束15做别的事去了主线程开始执行

 

转载于:https://my.oschina.net/vincentzhao/blog/685350

你可能感兴趣的文章
jmeter-noguimodel
查看>>
Git使用++
查看>>
[C++]基本类型转换
查看>>
清除windows系统垃圾文件简易脚本(bat)
查看>>
Android WindowManager实现悬浮窗效果 (一)——与当前Activity绑定
查看>>
陶哲轩实分析 定理7.5.1 (方根判别法) 证明
查看>>
The direct sum of functions
查看>>
《Linux内核设计与实现》读书笔记(十五)- 进程地址空间(kernel 2.6.32.60)
查看>>
python实战===2017年30个惊艳的Python开源项目 (转)
查看>>
TurnipBit:和孩子一起动手DIY“滚动”的生日礼物
查看>>
删除一个链表中的重复元素
查看>>
C# 在多线程环境中,进行安全遍历操作
查看>>
Win7 防护墙设置——Ping命令,Http访问
查看>>
是男人就下100层【第一层】——高仿微信界面(6)
查看>>
day16- re模块(正则表达式 三种查找方法findall search match)
查看>>
CentOS7.x配置bond0
查看>>
vue随记
查看>>
Quick-cocos2d-x3.3 Study (十一)--------- 让物体从屏幕的外边移动到屏幕中指定位置...
查看>>
[转] 数据挖掘中易犯的几大错误
查看>>
select函数用法详解
查看>>