`
ch_space
  • 浏览: 109250 次
  • 性别: Icon_minigender_1
  • 来自: 农村进城务工人员
社区版块
存档分类
最新评论

CountDownLatch与CyclicBarrier

    博客分类:
  • Java
阅读更多
CountDownLatch与CyclicBarrier被设计用来进行一组线程协作工作,完成一个或多个阶段的任务,二者有什么区别与联系呢?
1、CountDownLatch
这个用来设置一个屏障点,这个屏障点有好几把锁,每把锁都被开开之后,主线程才能继续往下面执行。
一个李子:3个人去骑行,约定到某个地方集合吃饭,全部到之后老板才上菜。

//3个人出发,每个人到店之后报告老板
CountDownLatch latch=new CountDownLatch(3);
go(latch);
//全部到店之前,老板一直等着,不上菜
latch.await();

//所有人都到了,老板上菜
serve();



go(CountDownLatch latch){
   //第1个人出发,到了后通知老板
   latch.countDown();
   //第2个人出发,到了后通知老板
   latch.countDown();
   //第3个人出发,到了后通知老板
   latch.countDown();
}


2、CyclicBarrier

CyclicBarrier与CountDownLatch类似,但是可以去完成好几个阶段的任务,比如上述李子,到店吃玩饭后继续出发,到下一个目的地,全部到了之后再吃饭。
此时CyclicBarrier可以完成循环等待。

//3个人出发,每个人到店之后报告老板
CyclicBarrier cb =new CyclicBarrier(3);
for(...){
   //每个人出发
   go(cb);
}


//一个人的行程
go(CyclicBarrier cb){
   //到达地点1,等待其他人到齐
   cb.await();
   //都到了吃饭,然后再出发
   eat then continue going;
   
   //到达地点2,等待其他人到齐
   cb.await();
   //都到了吃饭
   eat;
}



总结:
CountDownLatch与CyclicBarrier 都是使一组线程协同完成一项任务,而CyclicBarrier 可以循环进行,完成多个阶段的任务(当然也可以用在单个任务的处理),CountDownLatch用的比较多。
分享到:
评论

相关推荐

    CountDownLatch和CyclicBarrier用法实例大全

    《java并发编程》中CountDownLatch和CyclicBarrier用法实例大全,几乎包含了所有重要的用法

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

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

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

    主要介绍了Java并发编程:CountDownLatch与CyclicBarrier和Semaphore的实例详解的相关资料,需要的朋友可以参考下

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

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

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

    CountDownLatch 和 CyclicBarrier 为线程同步的辅助工具,通过它可以做到使一条线程一直阻塞等待,直到其他线程完成其所处理的任务。

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

    Java并发编程一CountDownLatch、CyclicBarrier、Semaphore初使用 CountDownLatch、CyclicBarrier、Semaphore这些线程协作工具类是基于AQS的,看完这篇博客后可以去看下面这篇博客,了解它们是如何实现的。 Java并发...

    CountDownLatch、CyclicBarrier、Semaphore.md

    java 高并发应用场景

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

    主要介绍了详解java CountDownLatch和CyclicBarrier在内部实现和场景上的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Java中的CountDownLatch类最全讲义

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

    Java并发编程学习笔记

    7、并发工具类CountDownLatch 、CyclicBarrier和Semaphore底层实现原理 8、线程池原理和如何使用线程池 9、ThreadLocal 为什么会内存泄漏 10、Volatile底层实现原理 11、AQS源码分析 12、CAS原理分析和使用场景 13、...

    Java进阶教程,面试大全,包罗万象

    Java进阶教程,面试大全1,可参考以下问题: Semaphore-信号灯机制。 synchronized在静态方法和普通方法的区别。 怎么实现所有线程在等待某个事件的发生...CountDownLatch和CyclicBarrier的用法,以及相互之间的差别。

    Java进阶教程,面试大全

    Java进阶教程,面试大全1,可参考以下问题: Semaphore-信号灯机制。 synchronized在静态方法和普通方法的区别。 怎么实现所有线程在等待某个事件的发生...CountDownLatch和CyclicBarrier的用法,以及相互之间的差别。

    Concurrent包的小例子

    Concurrent下的例子,涵盖了大部分常用类 例如BlockingQueue、CountDownLatch、CyclicBarrier、Exchanger、ExecuteService、lock、timeutil等

    ThreadTest.rar

    java并发,主要用于初学者学习,主要案列,Thread.join,ThreadLocal,Lock接口,LockSupport,Condition接口,ConcurrentHashMap的实现原理与...Fork/Join 框架,CountDownLatch,CyclicBarrier,Semaphore,Exchanger

    Java并发编程基础.pdf

    Java并发编程基础主要包括以下几个核心方面: ...并发工具类:掌握Java并发包java.util.concurrent中提供的各种工具类,如CountDownLatch、CyclicBarrier、Semaphore等,它们简化了并发编程的复杂性。

    CyclicBarrier用法.docx

    与CountDownLatch不同的是,CyclicBarrier可以重复使用,即当所有线程都到达屏障后,屏障会自动重置,可以继续使用。 CyclicBarrier的构造方法如下: java public CyclicBarrier(int parties, Runnable ...

    multiThread.jpg

    Java多线程技术思维导图,覆盖全面,可用作学习指导和查缺补漏,十分高效。...涵盖线程中断、线程状态、线程间通信,并发容器、ThreadLocal、Synchronized、CountDownLatch、CyclicBarrier等内容。

    多线程控制的三大安全类封装

    多线程控制的三大安全类:CountDownLatch、CyclicBarrier、Semaphore,这工具包将其封装,可以让初学者更容易学习以及让开发者更容易调用,不需要自己重新编写核心代码。具体事例在源码中。

    JUC多线程学习个人笔记

    JUC(Java Util Concurrent)是Java中用于并发编程的工具包,提供了一组接口和类,用于...并发工具类:JUC提供了一些并发编程的工具类,如Semaphore、CountDownLatch、CyclicBarrier等,可以实现线程间的协作和同步。

Global site tag (gtag.js) - Google Analytics