JDK1.5 Cyclicbarrier实例

编程技术  /  houtizong 发布于 3年前   82

CyclicBarrier

一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 barrier

CyclicBarrier支持一个可选的 Runnable 命令,在一组线程中的最后一个线程到达之后(但在释放所有线程之前),该命令只在每个屏障点运行一次。若在继续所有参与线程之前更新共享状态,此屏障操作很有用。

CyclicBarrier(int parties, Runnable barrierAction) 构造方法:

创建一个新的 CyclicBarrier,它将在给定数量的参与者(线程)处于等待状态时启动,并在启动 barrier 时执行给定的屏障操作,该操作由最后一个进入 barrier 的线程执行。

 

实例1

package com.bijian.thread;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;public class SubTask extends Thread {private String name;private CyclicBarrier cb;SubTask(String name, CyclicBarrier cb) {this.name = name;this.cb = cb;}public void run() {System.out.println("[子任务" + name + "]开始执行了!");try {Thread.sleep(1000);} catch(Exception e) {}for (int i = 0; i < 999999; i++); // 模拟耗时的任务System.out.println("[子任务" + name + "]开始执行完成了,并通知障碍器已经完成!");try {// 通知障碍器已经完成cb.await();} catch (InterruptedException e) {e.printStackTrace();} catch (BrokenBarrierException e) {e.printStackTrace();}}}

 

package com.bijian.thread;public class MainTask implements Runnable {public void run() {System.out.println(">>>>主任务执行了!<<<<");}} 
下一篇:JDK1.5 Queue

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客