`
denghua10
  • 浏览: 73450 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

线程同步辅助-CyclicBarrier

阅读更多
线程同步辅助-CyclicBarrier指的是属于同一个线程组中的线程必须在指定的集合点上到齐。其中最重要的方法就是await方法。
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class TestCyclicBarrier {
public static void main(String[] args){
//创建需要同步三个线程的同步辅助对象
CyclicBarrier barrier=new CyclicBarrier(3);
//创建容量为三的固定线程池
ExecutorService exec=Executors.newFixedThreadPool(3);
//向线程池中提交三个任务
exec.submit(new Runner(barrier,0,new int[]{4,8,18}));
exec.submit(new Runner(barrier,1,new int[]{1,2,3}));
exec.submit(new Runner(barrier,2,new int[]{4,5,8}));
exec.shutdown();
}
}


import java.util.Date;
import java.util.concurrent.CyclicBarrier;

public class Runner implements Runnable{
private int no=0;//线程序号
private int[] times=null;//到达每个集合点需要的时间,单位为秒
private CyclicBarrier barrier=null;//同步辅助对象
public Runner(CyclicBarrier barroer,int no, int[] times){
this.no=no;
this.barrier=barroer;
this.times=times;
}

public void run() {
try{
Thread.sleep(times[0]*1000);
System.out.println(new Date()+" thread_"+no);
barrier.await();
Thread.sleep(times[1]*1000);
System.out.println(new Date()+" thread_"+no);
barrier.await();
Thread.sleep(times[2]*1000);
System.out.println(new Date()+" thread_"+no);
barrier.await();


}catch (Exception e) {
// TODO: handle exception
}

}

}
线程池的容量不能小于任务数。。。
分享到:
评论

相关推荐

    java10个线程按照顺序打印1-100

    5. **CountDownLatch**:`java.util.concurrent.CountDownLatch`是另一种同步辅助类,它允许一个或多个线程等待其他线程完成操作。在顺序打印的例子中,可以设置计数器为100,每个线程打印一个数字后减少计数器,...

    多线程精品资源--智能办公OA系统[SpringBoot2-快速开发平台],适用于医院,学校,中小型企业等机构的管理.zip

    4. **并发工具类**:如ConcurrentHashMap、CountDownLatch、CyclicBarrier等,辅助实现高效并发编程。 此外,该系统可能还涵盖了以下关键点: - **权限管理**:基于RBAC(Role-Based Access Control)的角色权限...

    Java多线程应用

    - **CyclicBarrier** 是同步辅助类,允许多个线程等待彼此到达一个屏障点后一起继续执行(thread-t053-jdk1.5-cyclicbarrier)。 - **SingleTaskThreadpool** 涉及到单任务线程池,可能是一种特定场景下的定制化...

    多线程的批量线程同步解决方案

    4. **CountDownLatch**:这是一个一次性使用的同步辅助类,用于让一组线程等待其他线程完成操作。在批量处理中,主线程可能使用CountDownLatch来等待所有子线程完成任务,然后继续执行后续操作。 5. **...

    Java多线程编程实战指南-核心篇

    此外,Phaser、CyclicBarrier和CountDownLatch等同步辅助类也是线程间协调的重要工具。 线程池是Java并发编程中不可或缺的一部分。Executor框架提供了ThreadPoolExecutor,它允许我们预先创建一定数量的线程,管理...

    线程面试题

    - `CountDownLatch`是一个一次性使用的同步辅助类,它允许一个或多个线程等待其他线程完成操作。 - `CyclicBarrier`可以重复使用,当等待的线程达到指定数量时,所有线程会被释放继续执行,并可以再次进入等待状态...

    《软件开发基础(Java)》实验报告-Java多线程编程.docx

    CyclicBarrier是一个同步辅助类,允许一组线程等待其他线程到达一个公共屏障点。在所有线程到达屏障点后,屏障会释放,所有线程继续执行。CyclicBarrier在多线程排序场景中起到了关键作用,确保所有线程完成排序后再...

    java并发编程专题(九)----(JUC)浅析CyclicBarrier

    CyclicBarrier 是 Java 并发编程中的一个同步辅助工具,它允许一组线程全部等待彼此到达公共屏障点。它的字面意思是可循环使用的屏障,用于让一组线程到达一个屏障时被阻塞,直到最后一个线程到达屏障时,屏障才会...

    java多线程相关

    - `CountDownLatch`计数器:一次性使用的同步辅助类,倒计数后所有等待线程被释放。 - `CyclicBarrier`循环栅栏:一组线程等待所有线程到达屏障点后一起继续。 - `Phaser`:更灵活的栅栏,可以动态添加和移除参与...

    Java多线程开发之CyclicBarrier

     CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用,其相当...

    Java并发编程的艺术源码

    - `CyclicBarrier`和`CountDownLatch`: 同步辅助类,允许一组线程等待其他线程到达某个点后继续执行。 - `Semaphore`:信号量,控制同时访问特定资源的线程数量。 4. **并发集合** - `ConcurrentHashMap`: 并发...

    JAVA CyclicBarrier类详解.docx

    CyclicBarrier是Java并发包(java.util.concurrent)中一个重要的同步辅助类,它的主要作用在于协调多个线程之间的协作,使得这些线程能够一起到达一个公共的“集结点”(称为屏障点)。在多线程编程中,尤其是在...

    Java应用开发多线程

    - **CyclicBarrier/CountDownLatch**:同步辅助类,允许一组线程等待其他线程到达某个点后继续执行。 - **Future/Volatile**:用于处理异步结果和保证变量可见性。 6. **文件名分析**:`JFrameThread.java` `...

    java-thread-vedio.rar_java vedio

    - **CyclicBarrier和CountDownLatch**:同步辅助类,用于协调多个线程之间的操作。 4. **线程间的通信**: - **wait()和notify()/notifyAll()**:在同步块中使用,使线程进入等待状态或唤醒等待的线程。 - **...

    Java多线程矩阵相乘的代码

    2. **线程同步**:为了避免数据竞争,可能需要用到synchronized关键字或者java.util.concurrent包下的高级同步机制,如Semaphore或CyclicBarrier。 3. **线程安全的数据结构**:如果线程之间需要共享数据,必须确保...

    java_util_concurrent_user_guide并发工具包详解

    - 一个同步辅助类,用于协调多个参与者(线程)的执行,每个参与者在完成一个阶段后可以进入下一个阶段。 这些工具和类的设计目的是为了简化并发编程,提高性能和可维护性。在实际开发中,根据具体需求选择合适的...

    Android多线程全新讲解.pdf

    CyclicBarrier是一种同步辅助,用于让一组线程互相等待,直到全部到达某个公共点后才能继续执行;CountDownLatch可以用于一个线程等待其他线程完成各自的任务;Exchanger用于两个线程之间交换对象;...

    Java多线程赛马游戏Java源码

    - `CountDownLatch`或`CyclicBarrier`:同步辅助类,用于控制多个线程的并发访问,例如所有马匹都准备好后才开始比赛。 总之,通过分析和学习这个"Java多线程赛马游戏"的源码,我们可以深入了解Java多线程编程的...

    40个Java多线程问题总结

    - `CyclicBarrier`是一个同步辅助类,用于协调多个线程的工作。当所有参与线程都到达指定屏障点时,它们将被释放并继续执行。这个屏障点可以被多次重置和使用,因此称为“循环”。 - 如果某个线程提前到达屏障点,...

    Java多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask详解

    首先,CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到所有线程都到达一个特定的屏障点。CyclicBarrier的名字来源于它的可重用性,当所有线程都到达屏障点后,屏障会自动重置,允许下一轮的线程同步。...

Global site tag (gtag.js) - Google Analytics