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(">>>>主任务执行了!<<<<");}}
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接