文档章节

CountDownLatch使用小例

Small-Liu
 Small-Liu
发布于 2016/03/01 09:35
字数 147
阅读 42
收藏 0
点赞 1
评论 0

需要:主线程里启动子线程,需要等子线程里的某个操作完成后主线程才能继续往下走。

final CountDownLatch countDownLatch = new CountDownLatch(2);
for(int i=0;i<2;i++) {
	// 服务端启动
	new Thread(new Runnable() {
		public void run() {
			try {
				Thread.sleep(100);
				System.out.println("test1");
				Thread.sleep(100);
				countDownLatch.countDown();
				Thread.sleep(100);
				System.out.println("test2");
			} catch (Exception e) {
				e.printStackTrace();
				System.exit(-2);
			}
		}
	}).start();
}
System.out.println("test-main1");
try {
	countDownLatch.await();
} catch (InterruptedException e) {
	e.printStackTrace();
}
System.out.println("test-main2");

结果:

test-main1
test1
test1
test-main2
test2
test2

 CountDownLatch是原子操作,await()阻塞直到初始值变为0

只有当两个线程都走完test1时主线程才会继续往下走。

© 著作权归作者所有

共有 人打赏支持
Small-Liu
粉丝 16
博文 56
码字总数 49976
作品 0
南京
程序员
Java并发编程之CountDownLatch

CountDownLatch(闭锁)是一个很有用的工具类,利用它我们可以拦截一个或多个线程使其在某个条件成熟后再执行。 说到这,给大家举一个最典型的例子:假设一条流水线上有三个工作者:worker0,w...

code_xzh
05/24
0
0
【java.util.concurrent】CountDownLatch解析

一、概念 被用来同步一个或多个线程任务,强制他们等待直到由其他线程完成正在执行的一组操作。 可以向CountDownLatch对象设置一个计数值,可以通过在该对象上调用countDown()方法来减小该计...

阿阿阿阿阿局
2016/08/09
14
0
Java并发学习(十七)-并发工具CountDownLatch

另一个并发工具,CountDownLatch,和CyclicBarrier功能上有点类似,但是在实现上和是不同的。 What is CountDownLatch 简单的说,也是一个计数器,和CyclicBarrier相比,一定方面是更加灵活的...

anLA_
2017/12/10
0
0
java中等待所有线程都执行结束

使用CountDownLatch,这其实是最优雅的写法了,每个线程完成后都去将计数器减一,最后完成时再来唤醒 @Test public void testThreadSync3() { final Vector list = new Vector(); Thread[] t...

17099933344
2017/11/09
0
0
SpringBoot使用JPA操作数据库

第七章 使用JPA操作数据库 本章主要介绍如何在Spring Boot的Web应用中使用Mysq数据库,也充分展示Spring Boot的优势(尽可能少的代码和配置). 数据访问层我们将使用Spring Data JPA和Hiber...

东海陈光剑
2016/07/02
129
1
单例模式的标准写法、注意事项、作用及测试

最新最准确内容建议直接访问原文:单例模式 主要介绍单例模式的标准写法、注意事项、作用、测试,以Java语言为例,下面代码是目前见过最好的写法: public class Singleton { private stati...

Trinea
2013/09/09
1K
5
使用CountDownLatch协调子线程

从JDK 1.5之后,在java.util.concurrent包下引入了好多的处理多线程的工具类,本文将介绍CountDownLatch工具类,并采用这个工具类给出一个实例。 CountDownLatch工具类介绍 CountDownLatch描...

王孟君
2016/11/05
322
2
单例模式的N种写法

鲁迅在《孔乙己》说孔乙己会写N种不同的回字, 回、囘、囬…… 。那今天我们来写几种常见的单例模式。单例模式在所有的设计模式书籍里都是作为第一个模式来讲解,因为它给人简单易于理解的感...

robin-yao
2016/12/27
130
5
【死磕Java并发】-----J.U.C之并发工具类:CountDownLatch

此篇博客所有源码均来自JDK 1.8 在上篇博客中介绍了Java四大并发工具一直的CyclicBarrier,今天要介绍的CountDownLatch与CyclicBarrier有点儿相似。 CyclicBarrier所描述的是“允许一组线程互...

chenssy
2017/04/24
0
0
CountDownLatch使用

分享牛原创,CountDownLatch类的使用,CountDownLatch是一个工具类,运行主线程开启子线程的时候,子线程还没有结束的时候,主线程可以一直等待,直到初始化的现成的计数器count为0,主线程就...

分享达人
2016/05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Linux CentOS 7上安装极点五笔

话说几天前在新买的惠普笔记本上成功地安装了Linux CentOS 7操作系统、Nvidia Quandro P600驱动程序及X Window,并在VMware下安装Red Hat教学环境,彻底跳出Windows的苦海,但仍然有一件事不...

大别阿郎
21分钟前
0
0
2018年7月20日集群课程

一、集群介绍 集群,简单地说是指一组(若干个)相互独立的计算机,利用高速通信网络组成一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。 ...

人在艹木中
24分钟前
0
0
spark开发机中调试snappy

目的 在Idea中的点击运行,使spark可以直接读取snappy 自己编译hadoop,以支持snappy的压缩。 自己编译的目的就是要得到支持snappy文件读写的动态链接库。如果可以在网上下载,可以跳过自行编...

benny周
41分钟前
0
0
centos7 安装docker

1,查看系统版本 cat /etc/redhat-release 2,安装gcc yum -y install gccyum -y install gcc-c++ 3,卸载旧版本 yum remove docker \ docker-client \ ......

暗中观察
42分钟前
0
0
rabbitmq学习记录(七)交换机Exchange-topic

实现功能:一条消息发送给多个消费者 交换机模式:topic 相比于direct匹配模式,匹配routingKey时,topic模式下不仅支持完全匹配,还支持两种特殊的匹配方式 #:可以匹配一个或多个字符 *:可...

人觉非常君
42分钟前
0
0
[译]为什么(要使用)GNU Affero GPL?

#为什么(要使用)GNU Affero GPL? 作者信息:Copyright © 2010, 2013, 2014, 2015 Free Software Foundation, Inc. This page is licensed under a Creative Commons Attribution-NoDeriv......

ICE冰焰火灵X
43分钟前
0
0
apollox-lua 示例

这个项目是从openn2o里迁出的项目。 示例地址 apollox-lua.js 是把js翻译成lua的库。支持两种不同的模态, 在编译工程的时候使用 可以用作openresty的代码翻译, 即用js代替lua。在web模式可...

钟元OSS
53分钟前
0
0
Ubuntu系统笔记 Linux系统

Ubuntu 16.04.3 Ubuntu系统,不适用yum, yum软件源都是RPM软件包,不是deb格式软件包,所以你即便是在Ubuntu上面安装了yum,也是完全用不了的。 不推荐 apt好于yum apt install screen...

阿锋zxf
55分钟前
0
0
Java面试中,遇到这类面试题最吃亏!

从你接触 Java开发到现在,你对 Java最直观的印象是什么呢?是它宣传的 “Compile once, run anywhere”,还是目前看已经有些过于形式主义的语法呢?你对于 Java平台到底了解到什么程度?请你...

Java大蜗牛
今天
0
0
fiddle 4 初始化

下载 配置fiddle 4 如果证书导出失败,执行下面脚本 D:\programs\Fiddler>makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.c......

柯里昂
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部