`
白浪滔天
  • 浏览: 88497 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

CountDownLatch 与 CyclicBarrier

    博客分类:
  • java
阅读更多

 

CountDownLath :用于多任务查询,适用于等待所有任务都返回或超时场景。如下:

 

 

  
class CountDownLatchJob implements Runnable{
	private CountDownLatch latch;
	private String name;
	private int waitTime;
	
	public CountDownLatchJob (CountDownLatch latch,
                                  String name,int waitTime) {
		this.latch = latch;
		this.name= name;
                this.waitTime=waitTime;
	}

	@Override
	public void run() {
	  try {
	   	  TimeUnit.MILLISECONDS.sleep(waitTime);
		   System.out.println(name+ " completed!");
	      } catch (InterruptedException e) {
		   e.printStackTrace();
	      }finally{
                     latch.countDown();
              }
	}
}

public class Test{
	 
	public static void main(String[] args) {
             int threadNum = 10;
             Random random = new Random();  
             CountDownLatch latch = new CountDownLatch(threadNum );
             for(int i = 0; i < threadNum ; i++){
                 new CountDownLatchJob (latch,"job"+i, 
                      r.nextInt(i*1000).start();
	     }	
              latch.await();//latch.await(timout);
	      System.out.println("All Job has Completed!");
	}
}

 

  CyclicBarrier 参考:http://www.iteye.com/topic/711162

分享到:
评论

相关推荐

    Java中的CountDownLatch与CyclicBarrier:深入理解与应用实践

    在Java的并发编程中,CountDownLatch和CyclicBarrier是两个非常重要的同步工具,它们用于协调多个线程的执行顺序。本文将详细介绍CountDownLatch和CyclicBarrier的工作原理、使用场景以及如何在实际项目中应用它们。...

    CountDownLatch和CyclicBarrier用法实例大全

    与CountDownLatch不同,CyclicBarrier可以重置,因此可以多次使用。 1. **初始化**: 通过`CyclicBarrier(int parties, Runnable barrierAction)`构造函数初始化,`parties`表示需要等待的线程数量,`barrierAction`...

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

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

    Java并发编程:CountDownLatch与CyclicBarrier和Semaphore的实例详解

    Java并发编程:CountDownLatch与CyclicBarrier和Semaphore的实例详解 Java并发编程是Java语言中的一种高级技术,用于处理多线程编程中的同步问题。Java 1.5中引入了几个高效的辅助类,包括CountDownLatch、...

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

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

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

    **CyclicBarrier与AQS的关系:** 虽然 CyclicBarrier 的实现不是直接基于 AQS,但它通过 ReentrantLock 实现了类似的功能,而 ReentrantLock 的底层实现正是 AQS。CyclicBarrier 内部使用 ReentrantLock 的 ...

    CountDownLatch、CyclicBarrier、Semaphore.md

    java 高并发应用场景

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

    与CountDownLatch不同,CyclicBarrier允许一组线程在达到某个预设的阈值(barrier点)时一起继续执行。CyclicBarrier的内部实现使用了ReentrantLock和Condition。它的核心概念是“代”,每个使用CyclicBarrier的事件...

    Java concurrency之CountDownLatch原理和示例_动力节点Java学院整理

    下面我们将深入探讨CountDownLatch的原理、使用方法以及与CyclicBarrier的区别。 首先,CountDownLatch的构造函数接受一个整数参数`count`,这个值表示计数器的初始值。当这个计数器归零时,所有等待在`await()`...

    Java并发编程一CountDownLatch、CyclicBarrier、Semaphore初使用

    在Java并发编程中,CountDownLatch、CyclicBarrier和Semaphore是三种重要的线程协作工具,它们都基于AbstractQueuedSynchronizer(AQS)框架来实现线程间的同步和协调。AQS是一个内置的锁和同步组件,它为构建高级...

    CountDownLatch练习

    1. **CountDownLatch与CyclicBarrier的区别**:CountDownLatch是一次性的,计数到零后无法重用;CyclicBarrier可以重置,允许多次同步点。 2. **如何避免死锁与饥饿**:在使用CountDownLatch时,要确保所有线程都能...

    Java中的CountDownLatch类最全讲义

    目录: 简介 1.1 并发编程与线程同步 1.2 CountDownLatch概述 CountDownLatch的基本用法 2.1 创建CountDownLatch对象 2.2 await()方法 ...CountDownLatch与CyclicBarrier的对比 最佳实践与注意事项

    Java并发编程之美_部分71

    本节主要讲解了Java并发包中线程同步器原理剖析,具体来说是 CountDownLatch 和 CyclicBarrier 的使用和原理剖析。 一、CountDownLatch CountDownLatch 是一个同步工具,它可以让一个线程等待其他线程完成某些操作...

    笔记-2、线程的并发工具类2

    4. **CountDownLatch与CyclicBarrier的区别** - CountDownLatch的放行是由第三方(持有计数器的线程)控制,而CyclicBarrier的放行是由参与等待的线程自身控制。 - CountDownLatch的放行条件是计数器的值大于等于...

    关于 java.util.concurrent 您不知道的 5 件事,第 2 部分

    2. **CountDownLatch与CyclicBarrier** CountDownLatch是一个同步辅助类,允许一个或多个线程等待其他线程完成操作。它是一个一次性使用的计数器,当计数值为0时,所有等待的线程才能继续执行。CyclicBarrier则允许...

    互联网大厂Java工程师岗位面试真题

    【CountDownLatch与CyclicBarrier】 CountDownLatch用于一次性释放多个线程,而CyclicBarrier允许多个线程等待至某个点一起开始执行。 【线程锁】 线程锁包括synchronized关键字和java.util.concurrent.locks包下的...

    Java 并发编程实战.pdf

    **CountDownLatch与CyclicBarrier** - **CountDownLatch**:允许一个或多个线程等待其他线程完成操作。 - **CyclicBarrier**:允许一组线程相互等待直到到达某个公共屏障点。 #### 3. **Semaphore** - **定义**...

    Java并发编程实践.pdf

    ##### 3.3 CountDownLatch与CyclicBarrier - **CountDownLatch**:允许一个或多个线程等待其他线程完成操作。它通过一个计数器来实现这种机制,每当一个参与者完成任务后,计数器的值就会减1;当计数器的值变为0时,...

    2021 java面试题.doc_面试资料下载

    CountDownLatch与CyclicBarrier - **CountDownLatch**: - 通过一个计数器实现,当计数器减为0时,等待的所有线程被唤醒。 - 通常用于等待一组子线程完成各自的工作后再继续执行后续的操作。 - **CyclicBarrier*...

Global site tag (gtag.js) - Google Analytics