CyclicBarrier 高并发的使用
来源:互联网 发布:htcg5软件 编辑:程序博客网 时间:2024/05/16 15:57
CyclicBarrier是Java中java.util.concurrent并发包里的一个工具类。作用就是控制多个线程同时等待某个事件的执行才会一起执行。
使用场景:多用于多个子线程等待主线程执行完毕后执行的场景。
两个重要构造方法:
new CyclicBarrier(int)int为等待的线程的个数。 new CyclicBarrier(int,Runnable)Runnable为等待的线程被触发时,优先执行的线程。
主要api
await(),用于作用于线程等待,每执行一次await()方法int数减一,直到int减为0时,所有等待的线程将被触发执行。
实例模仿CyclicBarrier使用
package test;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import org.junit.Test;public class TestCyclicBarrier implements Runnable{ CyclicBarrier barrier = new CyclicBarrier(4,this); ExecutorService service = Executors.newCachedThreadPool(); @Test public void test(){ service.submit(new Student1(barrier)); service.submit(new Student2(barrier)); service.submit(new Student3(barrier)); service.submit(new School(barrier)); } public void run() { System.out.println("老师提出问题!"); } class Student1 implements Runnable{ CyclicBarrier barrier; public void run() { try { barrier.await(); System.out.println("学生1抢答问题!"); }catch (Exception e) { e.printStackTrace(); } } Student1(CyclicBarrier barrier){ this.barrier=barrier; } } class Student2 implements Runnable{ CyclicBarrier barrier; public void run() { try { barrier.await(); System.out.println("学生2抢答问题!"); }catch (Exception e) { e.printStackTrace(); } } Student2(CyclicBarrier barrier){ this.barrier=barrier; } } class Student3 implements Runnable{ CyclicBarrier barrier; public void run() { try { barrier.await(); System.out.println("学生3抢答问题!"); }catch (Exception e) { e.printStackTrace(); } } Student3(CyclicBarrier barrier){ this.barrier=barrier; } } class School implements Runnable{ CyclicBarrier barrier; public void run() { try { System.out.println("上课铃响"); barrier.await(); }catch (Exception e) { e.printStackTrace(); } } School(CyclicBarrier barrier){ this.barrier=barrier; } }}
运行结果:
0 0
- CyclicBarrier 高并发的使用
- java并发:CyclicBarrier的使用
- Java并发编程之CyclicBarrier的使用
- Java并发编程CyclicBarrier的使用
- 实战Java高并发程序设计之CyclicBarrier
- java并发编程中CountDownLatch和CyclicBarrier的使用
- java并发编程中CountDownLatch和CyclicBarrier的使用 - [java]
- java并发编程中CountDownLatch和CyclicBarrier的使用
- java并发编程中CountDownLatch和CyclicBarrier的使用
- java并发编程中CountDownLatch和CyclicBarrier的使用
- Java并发编程中CountDownLatch和CyclicBarrier的使用
- Java并发编程中CountDownLatch和CyclicBarrier的使用
- java并发编程中CountDownLatch和CyclicBarrier的使用
- Java并发编程中CountDownLatch和CyclicBarrier的使用
- java并发编程中CountDownLatch和CyclicBarrier的使用
- java并发编程中CountDownLatch和CyclicBarrier的使用
- java并发编程中CountDownLatch和CyclicBarrier的使用
- 【java并发】线程同步工具CyclicBarrier的使用
- 搭建以太坊私有链和部署智能合约开发环境
- React学习之进阶性能优化(十五)
- Codeforces Round #374 (Div. 2) D. Maxim and Array 贪心
- Android 数据清除工具类
- HDU 1143Tri Tiling&&POJ2663
- CyclicBarrier 高并发的使用
- PhoneView
- 网络协议逆向分析
- dpdk内存管理之内存分配器(堆分配)
- jdbc连接数据库,使用通配符
- middle-box
- Spring MVC前后台传递JSON
- mdadm代码解析
- JavaScript学习: NaN数据类型