`
buzhucele
  • 浏览: 332422 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java同步例子之CyclicBarrier

    博客分类:
  • java
阅读更多
它允许一组线程互相等待,直到到达某个公共屏障点,barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。
package concurrent;

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;

/**
 * 允许一组线程互相等待,直到到达某个公共屏障点
 * @author user
 *
 */
public class CyclicBarrierTest {
	
	private int[] numArray = new int[5];
	
	private final CyclicBarrier barrier = new CyclicBarrier(5, new Runnable() {		
		@Override
		public void run() {
			int sum = 0;
			for(int i = 0; i < numArray.length; i++){
				sum += numArray[i];
			}
			System.err.println(sum);
			
		}
	});
	
	public void start(){
		for(int i = 0; i < numArray.length; i++){
			final int j = i;
			new Thread(new Runnable() {				
				@Override
				public void run() {
					numArray[j] = j + 1;
					try {
						barrier.await();
					} catch (InterruptedException e) {
						e.printStackTrace();
					} catch (BrokenBarrierException e) {
						e.printStackTrace();
					}
				}
			}).start();
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		CyclicBarrierTest test = new CyclicBarrierTest();
		test.start();
	}

}
分享到:
评论

相关推荐

    Java中的CyclicBarrier类最全讲义

    为此,Java提供了多种机制来帮助实现线程间的协作与同步,其中包括了`CyclicBarrier`类。 ### 1.2 CyclicBarrier概述 `CyclicBarrier`是Java并发工具包(`java.util.concurrent`)中的一个强大工具。它的主要作用...

    JAVA CyclicBarrier类详解.docx

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

    Java实现进程同步

    5. **CountDownLatch** 和 **CyclicBarrier**:这两个工具类可以帮助我们实现线程间的同步,例如,CountDownLatch可以让一组线程等待其他线程完成操作,而CyclicBarrier则允许一组线程到达一个屏障(或同步点)后...

    java多线程并发编程例子

    1. **CyclicBarrier**:`CyclicBarrier`是一个同步辅助类,允许一组线程等待彼此到达一个公共屏障点。在所有线程都到达屏障后,屏障点被重置,然后线程可以继续执行。例如,`TestCyclicBarrier`和`TestCyclicBarrier...

    java 同步阻塞并唤醒指定线程

    这时,我们可以利用`java.util.concurrent`包中的`Semaphore`(信号量)、`CyclicBarrier`(循环屏障)或`CountDownLatch`(计数门锁)等工具来更精细地控制线程的同步和唤醒。例如,`Semaphore`可以限制同时访问...

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

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

    Java线程的简单例子

    理解并熟练掌握Java线程的创建、控制以及同步是Java开发者必备的技能。 首先,我们来探讨一下Java线程的创建方式。Java提供了两种主要的线程创建方法:通过实现Runnable接口和继承Thread类。当一个类实现Runnable...

    CountDownLatch和CyclicBarrier用法实例大全

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

    JAVA100例之实例65 JAVA线程同步

    3. **java.util.concurrent 包**:这个包提供了许多高级的线程同步工具,如Semaphore(信号量)、CyclicBarrier(回环屏障)、CountDownLatch(倒计时器)等。这些工具可以更灵活地控制线程的并发执行。 4. **...

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

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

    Java多线程同步[定义].pdf

    这个工具包包含了丰富的同步工具,如Semaphore(信号量),ReentrantLock(可重入锁),Condition,以及CyclicBarrier和CountDownLatch等。这些高级工具允许开发者更灵活地控制线程的执行顺序和协作。 在上述的示例...

    java中的线程优先级例子

    而是应该更多地使用同步机制(如`synchronized`关键字、`Lock`接口等)、线程池(`ExecutorService`)和并发工具类(如`Semaphore`, `CountDownLatch`, `CyclicBarrier`等),这些工具能提供更加稳定和可预测的并发...

    一个简单的线程同步实例

    在Java等编程语言中,线程同步可以通过多种方式实现,本实例将探讨其中的几种常见方法。 首先,我们来看最基本的同步机制——synchronized关键字。synchronized可以用于方法或者代码块,当它包裹的代码被执行时,会...

    多线程不同步演示2

    此外,`java.util.concurrent`包提供了如Semaphore(信号量)、CyclicBarrier(回环屏障)和CountDownLatch(计数器门)等工具,帮助实现更复杂的同步策略。 在"多线程不同步演示2"的源码中,我们可以分析其代码...

    java 编程百例 各种例子 全面

    17. **并发工具**:如Semaphore、CountDownLatch、CyclicBarrier等,用于多线程同步。 每个示例都会包含详细的代码解释和运行结果分析,帮助开发者逐步掌握Java编程的精髓。通过深入学习和实践这些例子,开发者能够...

    java多线程示例

    在Java编程语言中,多线程是核心特性之一,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应速度。本示例着重探讨如何在Java中实现和管理多线程,以及它带来的挑战和解决方案。 一、Java多线程基础 1. ...

    Java线程(Java.Thread)(中英版)

    这些源代码可能涵盖了各种线程编程场景,比如并发数据结构的实现、线程同步的例子、线程池的使用等。 总的来说,这个资源包为学习和深入理解Java线程提供了全面的材料,从基础概念到高级并发策略,涵盖了一个Java...

    Java并发编程实战中的例子.zip

    `java.util.concurrent`包中的`Semaphore`、`CyclicBarrier`和`CountDownLatch`等类也是实现线程间同步的重要工具。 5. **并发模式**:包括生产者消费者模型、读者写者模型、工作窃取算法等,这些都是并发编程中...

Global site tag (gtag.js) - Google Analytics