文档章节

CyclicBarrier用法

lujiawei
 lujiawei
发布于 2017/04/09 01:20
字数 331
阅读 20
收藏 1

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

CyclicBarrier可以让几个线程准备好,等全部线程准备好了,再一起执行。举个例子,张三、李四、王五约好一起吃饭,只有三个人到期了才开始吃,这个例子自认为举得不错,给自己一点掌声,下面请看代码

package com.lujiawei.thread;

import java.util.concurrent.CyclicBarrier;

/**
 * CyclicBarrier用法
 * @author   jiawei
 * @version  V1.0
 * @date     2017年4月9日上午1:11:07
 */
public class CyclicBarrierTest {

	public static void main(String[] args) {
		
		//初始化一个CyclicBarrier,后面3表示需要三个线程准备好了才能进行一起执行
		CyclicBarrier cyclicBarrier = new CyclicBarrier(3);
		
		Thread zhangsan = new Thread(new Runnable() {
			@Override
			public void run() {
				try {
					System.out.println("张三准备到了,准备吃饭....");
					cyclicBarrier.await();   //等待其他线程准备好
					System.out.println("张三开吃");
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
		
		Thread lisi = new Thread(new Runnable() {
			@Override
			public void run() {
				try {
					System.out.println("李四到了,准备吃饭....");
					cyclicBarrier.await();   //等待其他线程准备好
					System.out.println("李四开吃");
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
		
		Thread wangwu = new Thread(new Runnable() {
			@Override
			public void run() {
				try {
					System.out.println("王五到了,准备吃饭....");
					cyclicBarrier.await();
					System.out.println("王五开吃");
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
		
		zhangsan.start();
		lisi.start();
		wangwu.start();
		
	}
}

 

看下打印的结果

 

李四到了,准备吃饭....
王五到了,准备吃饭....
张三准备到了,准备吃饭....
张三开吃
王五开吃
李四开吃

 

© 著作权归作者所有

上一篇: jdk自带Fature笔记
下一篇: CountDownLatch用法
lujiawei
粉丝 0
博文 6
码字总数 2735
作品 0
广州
后端工程师
私信 提问
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

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

明舞
2015/09/01
148
0
JAVA多线程提高十:同步工具CyclicBarrier与CountDownLatch

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

pony1223
2018/07/13
0
0
JDK5.0新特性系列---11.5.3线程 同步装置之CyclicBarrier

import java.util.Random; import java.util.concurrent.CyclicBarrier; /** * CyclicBarrier维持一个计数器,与CountDownLatch不同的是,等待这个CyclicBarrier的线程必须等到计数器的某个值时...

tavenli
2011/12/17
0
0
学习笔记六:线程间的协作与通信之并发工具类

继续 上一篇 《 学习笔记五:线程间的协作与通信》 在jdk的并发包里提供了几个非常有用的并发工具类。CountDownLatch、CyclicBarrier和Semaphore工具类提供了一种并发流程控制的手段,Excha...

刘祖鹏
2018/07/26
19
0
java高并发之CountDownLatch,CyclicBarrier和join

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

2018/07/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部