文档章节

CountDownLatch用法

lujiawei
 lujiawei
发布于 2017/04/09 01:01
字数 423
阅读 3
收藏 0

文章完全是按照自己的理解写的,如果有什么不对的地方,请指正....

CountDownLatch可以让某一个线程等待,等其他线程执行完了再执行等待的线程,举个例子就是:帮女朋友买面膜是一个线程,买口红是一个线程,帮自己买一双鞋是一个线程,CountDownLatch可以做到买鞋先等待,把面膜和口红买了再买鞋,这样应该可以理解了吧,理解了再看看代码

 

package com.lujiawei.thread;

import java.util.concurrent.CountDownLatch;

/**
 * CountDownLatch用法
 * @author   jiawei
 * @version  V1.0
 * @date     2017年4月9日上午1:10:18
 */
public class CountDownLatchTest {
	
	public static void main(String[] args) {
		
		//初始化一个CountDownLatch,后面2表示需要两个线程执行完了才能执行等待的线程
		CountDownLatch countDownLatch = new CountDownLatch(1);
		
		//初始化一个鞋子的线程
		Thread shoes = new Thread(new Runnable() {
			@Override
			public void run() {
				try {
					System.out.println("准备买鞋子了.....");
					countDownLatch.await(); //等待着女朋友的东西买完
					System.out.println("女朋友的东西买完了,自己也买了鞋子....");
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
		
		//初始化一个面膜的线程
		Thread mask = new Thread(new Runnable() {
			@Override
			public void run() {
				try {
					System.out.println("买了面膜啦!!!!");
					countDownLatch.countDown(); //告诉countDownLatch已经买了面膜
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});

		//初始化一个口红的线程
		Thread lipstick = new Thread(new Runnable() {
			@Override
			public void run() {
				try {
					System.out.println("买了口红啦!!!!");
					countDownLatch.countDown();//告诉countDownLatch已经买了口红
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
		
		//启动三个线程
		shoes.start();
		mask.start();
		lipstick.start();
	}

}

以上就是代码,打印的结果如下

买了口红啦!!!!
准备买鞋子了.....
买了面膜啦!!!!
女朋友的东西买完了,自己也买了鞋子....

这就是我对CountDownLatch的肤浅用法,大家有什么疑问,可以一起讨论

© 著作权归作者所有

lujiawei
粉丝 0
博文 6
码字总数 2735
作品 0
广州
后端工程师
私信 提问
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

Java并发编程:CountDownLatch、CyclicBarrier和Semaphore   在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们...

明舞
2015/09/01
0
0
java高并发之CountDownLatch,CyclicBarrier和join

晚上打车回家,在车上看到一篇文章《22岁大学生获谷歌天价Offer,年薪千万!》,讲的是印度一个22岁大学生多次参加ACM大赛,开源多个项目,以非常牛逼的履历通过了谷歌的AI测试,斩获谷歌仅有...

2018/07/11
0
0
JAVA多线程提高十:同步工具CyclicBarrier与CountDownLatch

今天继续学习其它的同步工具:CyclicBarrier与CountDownLatch 一、CyclicBarrier CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)...

pony1223
2018/07/13
0
0
Java并发新构件之CounDownLatch

CountDownLatch主要用于同步一个或多个任务,强制它们等待由其他任务执行的一组操作完成。 你可以向CountDownLatch对象设置一个初始计数值,任何在这个对象上调用await()的方法都将阻塞,直到...

摆渡者
2015/10/13
0
0
Java模拟赛跑过程

Java并发面试中的一个经典问题——手写代码模拟赛跑过程。该问题考查CountDownLatch的用法,比Java实现生产者-消费者模型的考查更直接: 对Java并发模型的理解 对Java并发编程接口(CountDo...

monkeysayhi
2017/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

微信小程序和百度小程序开发的一些不同点

1: initActive从onload放到onready中 2: bindtap='{{childTickeData.freeadd?"childticket":""}}',语法错误。会导致页面加载不出来,而且也不报任何错。 3:使用搬家工具,支付api名称转换......

醉雨
12分钟前
0
0
最近执行过的SQL语句查询

SELECT TOP 1000 ST.text AS '执行的SQL语句' , QS.execution_count AS '执行次数' , QS.total_elapsed_time / 10000 AS '耗时' , QS.total_logical_reads AS '逻辑读取次数' , QS.total_lo......

神手--追魂
13分钟前
0
0
从濒临解散到浴火重生,OceanBase 这十年经历了什么?

阿里妹导读:谈及国产自研数据库,就不得不提 OceanBase。与很多人想象不同的是,OceanBase 并非衔着金钥匙出生的宠儿。相反,它曾无人看好、困难重重,整个团队甚至数度濒临解散。 从危在旦...

阿里云官方博客
17分钟前
0
0
阿里开发者招聘节 | 面试题02-04:给定一个二叉搜索树(BST),找到树中第K小的节点

为帮助开发者们提升面试技能、有机会入职阿里,云栖社区特别制作了这个专辑——阿里巴巴资深技术专家们结合多年的工作、面试经验总结提炼而成的面试真题这一次将陆续放出(面试题官方参考答案...

阿里云云栖社区
34分钟前
1
0
使用Redis SETNX 命令实现分布式锁

基于setnx和getset http://blog.csdn.net/lihao21/article/details/49104695 使用Redis的 SETNX 命令可以实现分布式锁,下文介绍其实现方法。 SETNX命令简介 命令格式 SETNX key value 将 ke...

彬彬公子
34分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部