`
someoneneedsme
  • 浏览: 4795 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

CyclicBarrier example

阅读更多
package com.jibx_maven;

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

public class BarrierTest {

	public static void main(String[] args) {
		 CyclicBarrier barrier = new CyclicBarrier(4, new Runnable() {
			@Override
			public void run() {
				
				System.out.println("ALL counting finished , starting summarizing ");
			}
		});
		 
		 new Thread(new BarrierTask("beijing", barrier)).start();
		 new Thread(new BarrierTask("shanghai", barrier)).start();
		 new Thread(new BarrierTask("guangzhou", barrier)).start();
		 new Thread(new BarrierTask("shenzhen", barrier)).start();
	}
}
class BarrierTask implements Runnable{

	private String code;
	private CyclicBarrier barrier ;
	@Override
	public void run() {
		System.out.println(code+ " starting counting...........");
		Random random = new Random();
		try {
			Thread.sleep(random.nextInt(20)*1000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(code+ " finish counting...........");
		try {
			barrier.await();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (BrokenBarrierException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	public BarrierTask(String code, CyclicBarrier barrier) {
		super();
		this.code = code;
		this.barrier = barrier;
	}
	
	
}
分享到:
评论

相关推荐

    countdownlatch-example-sourcecode.zip

    如果需要重复使用,考虑使用CyclicBarrier或Semaphore等其他同步工具。 - 误用可能导致死锁,比如计数器设置过大或者`countDown()`未正确调用,可能会导致等待的线程永久阻塞。 通过对`countdownlatch-example-...

    JD Example

    【Java Developer Example】是针对Java开发者的实例学习资料,它涵盖了Java编程语言的各个方面,旨在帮助初学者和有经验的开发者提升技能。"JD Exam"标签暗示了这是一系列与Java开发者考试相关的学习材料,可能包括...

    JAVA100例之实例65 JAVA线程同步

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

    第8章 多线程.pptx

    Java提供了多种同步机制,如`synchronized`关键字、`wait()`, `notify()`和`notifyAll()`方法,以及`java.util.concurrent`包中的各种高级工具,如`Semaphore`, `CyclicBarrier`, `CountDownLatch`等。 4. **死锁**...

    Java 生产消费者模式

    Java并发工具类如`Semaphore`、`CyclicBarrier`或`CountDownLatch`可以帮助管理线程同步。 5. **死锁与饥饿**:在实现生产消费者模式时,要防止死锁(两个或更多线程相互等待对方释放资源)和饥饿(某个线程因资源...

    用成员变量进行线程通信.rar_线程通信

    在"Example062"这个示例中,可能演示了如何使用成员变量和上述的一些线程通信技术。通过分析源代码,我们可以深入理解线程通信的实际应用,包括何时创建线程,如何控制线程的执行顺序,以及如何避免线程安全问题。这...

    Java并发编程与高并发解决方案之并发容器(J.U.C).docx

    public class SemaphoreExample1 { private final static int threadCount = 20; public static void main(String[] args) throws Exception { ExecutorService exec = Executors.newCachedThreadPool(); final ...

    用HttpClient写了一个多线程下载软件

    线程间通信可以通过使用CountDownLatch或CyclicBarrier等并发工具类来实现。这些工具可以帮助我们控制线程的启动和等待,确保所有线程完成后再执行下一步操作。例如: ```java CountDownLatch countDownLatch = new...

    java性能调优

    Java提供了多种机制来实现线程间的同步,包括但不限于`wait`/`notify`、`CountDownLatch`、`CyclicBarrier`以及`Semaphore`等。 - **锁**: 锁机制是实现线程安全的基础。Java提供了多种锁的实现方式,如`...

    java多线程demo

    此外,`CyclicBarrier`和`Phaser`可以用于协调多个线程的同步点,`Semaphore`用于限制同时访问某个资源的线程数量,`CountDownLatch`则常用于等待一组线程完成特定操作。 总之,这个"java多线程demo"项目提供了全面...

    阿里巴巴Java开发

    使用并发工具类,如synchronized、Semaphore、CyclicBarrier等,避免手动操作锁。 7. **集合使用**:了解各种集合框架的特性和适用场景,如ArrayList、LinkedList、HashMap、TreeMap等。注意集合的线程安全问题,...

    阿里最新手册-嵩山版.rar

    - 尽量避免使用synchronized,而是利用并发工具类,如`Semaphore`、`CyclicBarrier`等。 - 正确使用volatile关键字,确保多线程下的可见性和有序性。 - 避免并发下的数据竞争,合理使用锁和并发容器。 5. **注释...

    阿里巴巴Java开发手册(官方最新版)

    - 避免使用`Thread.sleep()`,推荐使用`CountDownLatch`、`CyclicBarrier`等同步工具。 - 对于共享资源,推荐使用`synchronized`关键字或`Lock`接口实现线程安全。 7. **数据访问**: - DAO层(数据访问对象)与...

    JAVA编程规范、如何编写代码

    - 避免使用`Thread.sleep()`,考虑使用`CountDownLatch`、`CyclicBarrier`等并发工具。 10. **单元测试**: - 为关键功能编写单元测试,确保代码质量。 - 使用JUnit或其他测试框架进行测试。 以上是Java编码中...

    通过实际示例了解线程的同步对象

    public class Example { private Object lock = new Object(); public void producer() { synchronized (lock) { // 生产操作 lock.notify(); } } public void consumer() { synchronized (lock) { // ...

    java类库 java包

    8. `java.concurrent`: 并发包,提供线程和同步工具,如ExecutorService、Future、Semaphore和CyclicBarrier,帮助开发者实现多线程和并发编程。 9. `java.time`: Java 8引入的新时间日期API,替代了旧的`java.util...

    threadSyncCountDownLatch:具有countDownLatch的线程同步模式

    在Java多线程编程中,`CountDownLatch`是一个非常重要的工具类,用于实现线程间的同步。...在实际项目中,结合其他并发工具如`CyclicBarrier`、`Semaphore`等,我们可以构建出更复杂的并发控制策略。

    Java语言规范宝典

    - 使用并发工具类如`CountDownLatch`, `Semaphore`, `CyclicBarrier`进行线程同步。 11. **输入/输出流**: - Java的I/O流模型基于流的概念,分为字节流(Byte Streams)和字符流(Character Streams)。 - 使用...

    java 多线程下载实例

    2. 同步控制:为了避免数据冲突,需要使用锁(如synchronized关键字)或高级并发工具(如Semaphore、CyclicBarrier等)来同步各个线程的下载进度。 3. 合并文件:所有线程下载完成后,将各部分按顺序合并成原始文件...

    corsexample

    【标题】"corsexample" 指的可能是一个关于Java并发编程的示例项目,因为 "cor" 往往关联于 "concurrent"(并发)的概念,而 "example" 显然是一个示例或者例子。这个项目可能是为了教授如何在Java环境中处理多线程...

Global site tag (gtag.js) - Google Analytics