Java多线程之CyclicBarrier用法
Java多线程之CyclicBarrier用法
本文目录
- CyclicBarrier的基本概念
- CyclicBarrier的案例:集齐7颗龙珠就可以召唤神龙
1. CyclicBarrier的基本概念
CyclicBarrier的字面意思是可循环(Cyclic)使用的屏障(Barrier)。它要做的事情是:
1. 让一组线程到达一个屏障(也可以叫同步点)时被阻塞, 直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。
2. 线程进入屏障通过CyclicBarrier的await()方法。
2. CyclicBarrier的案例:集齐7颗龙珠就可以召唤神龙
实现:
public class CyclicBarrierDemo
{private static final int NUMBER = 7;public static void main(String[] args){//构造方法,CyclicBarrier(int parties, Runnable barrierAction)CyclicBarrier cb = new CyclicBarrier(NUMBER, () -> { System.out.println("------召唤神龙");} ) ;for (int i = 1; i <=NUMBER; i++) {final int tempInt = i;new Thread(() -> {try {System.out.println(Thread.currentThread().getName()+"\t 收集到第:"+tempInt+"颗龙珠");cb.await();} catch (InterruptedException | BrokenBarrierException e) {e.printStackTrace();}},String.valueOf(i)).start();}}
}
编译结果:
Java多线程之CyclicBarrier用法相关推荐
- Java多线程之Semaphore用法
Java多线程之Semaphore用法 本文目录: Semaphore基本概念 Semaphore使用案例:3个停车位,6辆车去抢,走一辆,抢一个停车位. 1. Semaphore基本概念 在信号量上 ...
- Java多线程之CountDownLatch用法
Java多线程之CountDownLatch用法 本文目录: CountDownLatch基本概念 CountDownLatch案例:6个同学陆续离开教室后班长才可以关门 CountDownLatch ...
- (九)java多线程之CyclicBarrier
目录 引言 理论 例子 打赏 本人邮箱: kco1989@qq.com 欢迎转载,转载请注明网址 http://blog.csdn.net/tianshi_kco github: https://gi ...
- (十)java多线程之CountDownLatch
目录 引言 理论 例子 打赏 本人邮箱: kco1989@qq.com 欢迎转载,转载请注明网址 http://blog.csdn.net/tianshi_kco github: https://gi ...
- JAVA多线程之wait/notify
本文主要学习JAVA多线程中的 wait()方法 与 notify()/notifyAll()方法的用法. ①wait() 与 notify/notifyAll 方法必须在同步代码块中使用 ②wait ...
- Java多线程之Callable、Future和FutureTask
Java多线程之Callable接口 自己想总结一下的,看到一篇总结的更好的博客,就转载了,突然感觉真轻松,哈哈哈哈 文章转载于:Matrix海子:Java并发编程:Callable.Future和F ...
- Java多线程之Synchronized和Lock的区别
Java多线程之Synchronized和Lock的区别 目录: 原始构成 使用方法 等待是否可以中断 加锁是否公平 锁绑定多个条件Condition 小结:Lock相比较Synchronized的优 ...
- Java多线程之CAS缺点
Java多线程之CAS缺点 目录: 循环时间开销很大 只能保证一个共享变量的原子操作 引来ABA问题及解决方案(重点) 1. 循环时间开销很大 通过看源码,我们发现有个do while,如果CAS失败 ...
- Java多线程之CAS深入解析
Java多线程之CAS深入解析 目录: CAS是什么 CAS底层原理Unsafe深入解析 CAS缺点 引子:蚂蚁花呗一面:讲一讲AtomicInteger,为什么要用CAS而不是synchronize ...
最新文章
- 如何用 OS X 的 Xcode 写C语言程序
- 自动增加asp元件及onclick
- 拦截器中/* vs /** ------SpringMVC
- 新加入“扫码阅读”功能
- Gdiplus::GdiplusBase::operator new 函数不接受3 个参数问题的处理
- 如何提取明细表头_如何在实际操作中应用偏移修剪?
- easyUI-combotree的本地数据导入
- asp.net 生成图形验证码(字母和数字混合)
- flex 3 学习小结2
- 小米php架构图,小米商城基本框架部分
- Step 1: 盲打第三天
- c++语言里平方根值函数,函数式编程之函数定义与使用(以scala语言为例)
- iWebShop核心团队启动shukai新域名,进入全案SEO网络营销领域发力SEO众包外包服务
- EasyBoot常用的命令
- MySQL(5)条件查询 | 单行函数 | 事务详解
- linux 赋权文件,linux文件赋权
- uni-app在华为应用市场上架审核无法通过,涉及个人信息:IMEI用户数据收集问题
- Spring项目使用H2内存数据库做单元测试
- Linux常用命令一览表
- PICT测试工具的安装及使用
热门文章
- Socket-Client通信
- typedef和函数指针定义
- Ubuntu Linux 永山(mount)分
- Android Wifi方法大全
- window2003 server的一些优化设置_windows 2003
- LightOJ - 1071 Baker Vai(最大费用最大流+拆点)
- CodeForces - 1208E Let Them Slide(模拟+multiset)
- POJ - 3263 Tallest Cow(简单差分)
- HDU - 1255 覆盖的面积(线段树+扫描线)
- 埃及分数问题——迭代加深搜索