`
Hera
  • 浏览: 8585 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论
  • liuxuejin: 看了这么多篇,你能简短的把问题说明白。不错!例子简短容易明白。 ...
    CountDownLatch

CyclicBarrier

阅读更多

     CyclicBarrier同样是一个控制程序并发流程的类。它允许一组线程相互等待,直到到达某个公共的屏障点 Barrier point。在一组固定大小的线程的程序中,这些线程可能需要不时的相互等待。这时就需要用到CyclicBarrier。这也是和CountDownLatch的区别所在。CountDownLatch可以在一个点等待所有线程的返回,但是当count减为0的时候,值是不能重置的。而这个barrier

在释放等待线程以后可以重新使用。所以我们把这个叫做可以循环的barrier。

 

     CyclicBarrier支持一个可选的Runnable命令,在一组线程中的最后一个线程到达之后(在释放所有线程之前),该命令只在每个屏障点运行一次。

    

public class Test {
	private int threadCount;
	private CyclicBarrier barrier;
	private int loopCount = 10;
	
	public Test(int count){
		threadCount=count;
		barrier = new CyclicBarrier(count,new Runnable(){
			public void run(){
				System.out.println("through barrier!");
			}
			
		});
		
		for (int i=0; i< threadCount;i++){
			Thread thread = new Thread("thread"+i){
				public void run(){
					for(int j=0; j<loopCount;j++){
						System.out.println(currentThread().getName()+" is running "+j+"times");
						try{
							barrier.await();
						}catch(Exception e){
							e.printStackTrace();
						}
					}
				}
			};
			thread.start();
		}
	}
	public static void main(String args[]){
	
		Test t = new Test(3);
	}
}
public CyclicBarrier(int parties,
                     Runnable barrierAction) // 创建一个信的CyclicBarrier, 它将在给定数量的参与者处于等待状态的时候启动, 并在启动barrier时执行给定的屏障操作,该操作由最后一个进入barrier的线程执行。   
	      barrierAction:启动barrier时执行的命令		  

  

    

分享到:
评论

相关推荐

    CountDownLatch和CyclicBarrier用法实例大全

    在Java并发编程中,CountDownLatch和CyclicBarrier是两种非常重要的同步工具类,它们用于协调多个线程间的协作。这两个工具都是在`java.util.concurrent`包下,是Java并发库的重要组成部分。 **CountDownLatch** ...

    CyclicBarrier的用法

    在Java多线程编程中,`CyclicBarrier`是一个非常重要的同步工具类,它允许一组线程等待其他线程到达某个屏障点后再一起继续执行。这个屏障点就是我们所说的“循环栅栏”,顾名思义,它就像一个旋转门,所有线程必须...

    CyclicBarrier的使用以及注意事项

    CyclicBarrier的使用以及注意事项

    CyclicBarrier,reentrantlock,condition模拟抢票

    用CyclicBarrier,reentrantlock,condition来完成同时购买,同步购买的功能 JUC系列之模拟抢票(N人同时抢票,票不足系统补仓,N-M人继续抢票) http://blog.csdn.net/crazyzxljing0621/article/details/77891620

    CyclicBarrier用法.docx

    CyclicBarrier是Java并发编程中一个非常重要的工具类,它属于java.util.concurrent包,主要用于多线程间的协作,尤其在需要多个线程等待彼此完成特定任务后才能继续执行的场景中发挥着关键作用。CyclicBarrier的名字...

    Java中的CyclicBarrier类最全讲义

    # Java中的CyclicBarrier类最全讲义 ## 1. 简介 ### 1.1 并发编程与线程协作 在现代软件开发中,特别是高性能计算领域,利用多核处理器的能力变得至关重要。为了充分利用这些硬件资源,程序员们开始广泛采用并发...

    JAVA CyclicBarrier类详解.docx

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

    28 人齐了,一起行动—CyclicBarrier详解.pdf

    CyclicBarrier 是 Java 并发库中的一种同步工具类,用于协调多个线程之间的协作,使得它们能够一起开始某个计算任务或操作。它的名称“CyclicBarrier”来源于它具有可重用的特点,即当所有等待的线程都达到指定的...

    java并发编程中CountDownLatch和CyclicBarrier的使用借鉴.pdf

    java并发编程中CountDownLatch和CyclicBarrier的使用借鉴 java并发编程中CountDownLatch和CyclicBarrier是两个非常重要的线程控制和调度工具,经常被用于解决多线程程序设计中的线程等待问题。本文将对...

    Java并发系列之CyclicBarrier源码分析

    Java并发系列之CyclicBarrier源码分析 CyclicBarrier是Java并发系列中的一种同步工具类,用于实现一组线程相互等待。当所有线程都到达某个屏障点后,再进行后续的操作。下面是对CyclicBarrier源码的详细分析。 ...

    java并发编程中CountDownLatch和CyclicBarrier的使用.pdf

    在Java并发编程中,CountDownLatch和CyclicBarrier是两种非常重要的同步工具,用于协调多个线程之间的交互。它们都属于java.util.concurrent包下的类,为多线程编程提供了强大的支持。 **CountDownLatch** 是一个...

    CountDownLatch 和 CyclicBarrier 的运用(含AQS详解)

    ### CountDownLatch 和 CyclicBarrier 的运用(含AQS详解) #### CountDownLatch **定义与特点:** CountDownLatch 是 Java 并发包中的一个重要组件,它主要用于解决“一个或多个线程等待其他线程完成任务”的问题。...

    Java并发实例之CyclicBarrier的使用

    Java并发实例之CyclicBarrier的使用 CyclicBarrier是Java中的一种多线程并发控制实用工具,和CountDownLatch非常类似,它也可以实现线程间的计数等待,但是它的功能比CountDownLatch更加复杂且强大。CyclicBarrier...

    Java并发编程(CyclicBarrier)实例详解

    Java并发编程(CyclicBarrier)实例详解 Java并发编程(CyclicBarrier)实例详解主要介绍了Java并发编程(CyclicBarrier)实例详解的相关资料,JAVA编写并发程序的时候,我们需要仔细去思考一下并发流程的控制,...

    java多线程之CyclicBarrier的使用方法

    Java多线程之CyclicBarrier的使用方法 Java多线程之CyclicBarrier的使用方法是Java多线程编程中的一种同步机制,用于实现多个线程之间的同步协作。CyclicBarrier是Java 5中引入的一种同步机制,用于让多个线程等待...

    Java中CyclicBarrier的用法分析

    Java中的`CyclicBarrier`是一个同步辅助类,它允许一组线程互相等待,直到所有线程都到达一个公共的屏障点。这个屏障点就像一个交通信号灯,只有当所有的车辆(线程)都到达了交叉口,信号灯才会变为绿灯,允许它们...

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

    Java 并发编程专题(九)----(JUC)浅析 CyclicBarrier CyclicBarrier 是 Java 并发编程中的一个同步辅助工具,它允许一组线程全部等待彼此到达公共屏障点。它的字面意思是可循环使用的屏障,用于让一组线程到达一...

    详解java CountDownLatch和CyclicBarrier在内部实现和场景上的区别

    在Java并发编程中,CountDownLatch和CyclicBarrier都是用于协调多线程间同步的重要工具,它们可以帮助开发者在特定条件满足时启动或者结束线程的执行。本文将详细探讨这两个类的内部实现机制以及它们在实际应用场景...

    java线程并发cyclicbarrier类使用示例

    Java中的`CyclicBarrier`是用于多线程同步的一个强大工具,主要应用于一组线程需要在继续执行之前等待其他线程到达某个特定点的情况。它允许开发者定义一个屏障点,只有当所有参与的线程都到达这个屏障点时,它们才...

Global site tag (gtag.js) - Google Analytics