cyclicbarrier_Java并发– CyclicBarrier示例
cyclicbarrier
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
import java.util.logging.Level;
import java.util.logging.Logger;/**
* Java program to demonstrate how to use CyclicBarrier in Java. CyclicBarrier is a
* new Concurrency Utility added in Java 5 Concurrent package.
*
* @author Javin Paul
*/public class CyclicBarrierExample {//Runnable task for each thread
private static class Task implements Runnable {private CyclicBarrier barrier;public Task(CyclicBarrier barrier) {
this.barrier = barrier;
}@Override
public void run() {
try {
System.out.println(Thread.currentThread().getName() + " is waiting on barrier");
barrier.await();
System.out.println(Thread.currentThread().getName() + " has crossed the barrier");
} catch (InterruptedException ex) {
Logger.getLogger(CyclicBarrierExample.class.getName()).log(Level.SEVERE, null, ex);
} catch (BrokenBarrierException ex) {
Logger.getLogger(CyclicBarrierExample.class.getName()).log(Level.SEVERE, null, ex);
}
}
}public static void main (String args[]) {//creating CyclicBarrier with 3 parties i.e. 3 Threads needs to call await()
final CyclicBarrier cb = new CyclicBarrier(3, new Runnable(){
@Override
public void run(){
//This task will be executed once all thread reaches barrier
System.out.println("All parties are arrived at barrier, lets play");
}
});//starting each of thread
Thread t1 = new Thread(new Task(cb), "Thread 1");
Thread t2 = new Thread(new Task(cb), "Thread 2");
Thread t3 = new Thread(new Task(cb), "Thread 3");t1.start();
t2.start();
t3.start();}
}
输出:
Thread 1 is waiting on barrier
Thread 3 is waiting on barrier
Thread 2 is waiting on barrier
All parties are arrived at barrier, lets play
Thread 3 has crossed the barrier
Thread 1 has crossed the barrier
Thread 2 has crossed the barrier
java.util.concurrent.BrokenBarrierException
at java.util.concurrent.CyclicBarrier.dowait(CyclicBarrier.java:172)
at java.util.concurrent.CyclicBarrier.await(CyclicBarrier.java:327)
参考:来自Java的JCG合作伙伴 Javin Paul的Javarevisited博客中的Java 5 CyclicBarrier示例–并发教程 。
翻译自: https://www.javacodegeeks.com/2012/08/java-concurrency-cyclicbarrier-example.html
cyclicbarrier
cyclicbarrier_Java并发– CyclicBarrier示例相关推荐
- Java并发– CyclicBarrier示例
Java中的CyclicBarrier是JDK 5中java.util.Concurrent包中引入的同步器,以及其他并发实用程序(如Counting Semaphore , BlockingQueu ...
- PHP使用文件锁解决高并发问题示例
PHP使用文件锁解决高并发问题示例 参考文章: (1)PHP使用文件锁解决高并发问题示例 (2)https://www.cnblogs.com/lxwphp/p/8949518.html (3)htt ...
- (原创)使用TimeStamp控制并发问题[示例]-.cs脚本
TimeStamp.aspx.cs代码(C#),已调试通过: 1using System; 2using System.Collections; 3using System.Compone ...
- java线程本地变量_Java并发编程示例(九):本地线程变量的使用
这篇文章主要介绍了Java并发编程示例(九):本地线程变量的使用,有时,我们更希望能在线程内单独使用,而不和其他使用同一对象启动的线程共享,Java并发接口提供了一种很清晰的机制来满足此需求,该机制称 ...
- java 并发实例_java一些常用并发工具示例
最近把<java并发编程实战>-Java Consurrency in Practice 重温了一遍,把书中提到的一些常用工具记录于此: 一.闭锁(门栓)- CountDownLatch ...
- java一些常用并发工具示例
最近把<java并发编程实战>-Java Consurrency in Practice 重温了一遍,把书中提到的一些常用工具记录于此: 一.闭锁(门栓)- CountDownLatch ...
- php 文件锁 重发请求,PHP使用文件锁解决高并发问题示例
本文实例讲述了PHP使用文件锁解决高并发问题.分享给大家供大家参考,具体如下: 新建一个.txt文件,文件中什么都不用写. [一].阻塞(等待)模式:(只要有其他进程已经加锁文件,当前进程会一直等其他 ...
- golang并发官方示例
文章目录 Goroutines Channels Buffered Channels Range and Close Select fatal error: all goroutines are as ...
- java 取整型的低八位_Java 基础(十五)并发工具包 concurrent
本文目录: java.util.concurrent - Java 并发包简介 阻塞队列 BlockingQueue 数组阻塞队列 ArrayBlockingQueue 延迟队列 DelayQueue ...
最新文章
- dataset的去重计数 g2_去互联网公司面试,面试官问我SpringCloud,附答案
- 原创,真正解决iframe高度自适应的问题.兼容各浏览器
- snmp linux arm,Net-SNMP的交叉编译 for ARM64
- 关于Linux网卡调优之:RPS (Receive Packet Steering)
- 【英语学习】【WOTD】accolade 释义/词源/示例
- 交钱赎“人”!B站500万粉UP主被黑客勒索,腾讯都表示无解
- 使用memcachedclientXmemcached与Spring整合
- freeswitch被叫忙处理
- 查询linux安装了哪种中文,linux 安装 中文字体
- dk 7 linux x64.rpm,linux x64 Java/JDK 11下载 jdk-11.0.7_linux-x64_bin.rpm官方镜像版
- 什么是智能dns解析
- Dev-C++ 一直提示源文件未编译,原因及解决办法
- Lucas–Kanade method(LK光流法)
- 多重继承--读松本行弘的程序世界
- 捋一捋Python中的Dict(下)
- 大家都在用哪些OKR管理工具?
- 20145240 《信息安全系统设计基础》第六周同学问题总结
- 在word 页眉插入章编号+标题
- 帝国cms cj1.php,帝国cms源码中常用函数所在位置
- 【Matlab学习手记】csv和xlsx格式互转
热门文章
- 什么是 CAS 机制
- Java工程师必备技能
- 搭建ssh框架的步骤
- 《四世同堂》金句摘抄(九)
- React功能界面的组件化编码流程
- 去掉字符串后面所有的0 去掉字符串前面或后面的0;
- php array分组,php数组分组简单例子
- centos8启动zk集群失败:zk Error contacting service. It is probably not running.
- MySQL8.0: Serialized Dictionary Information(SDI) 浅析
- 使用互联网了解的两个月里_我两个月来对Quarkus的了解