- 浏览: 62940 次
- 性别:
- 来自: 成都
文章分类
最新评论
CountDownLatch类中维护了一个计数器,当计数器为0时,释放所有线程。这个类可以用于当所有的资源都初始化后进行操作。
CountDownLatch中的await方法等待计数器达到0,表示所有的线程已经执行完毕。如果计数器不为0,await()方法会一直阻塞等待计数器变为0。而countDown()方法用于递减计数器。
下面是一个计算执行时间的例子:
CountDownLatch中的await方法等待计数器达到0,表示所有的线程已经执行完毕。如果计数器不为0,await()方法会一直阻塞等待计数器变为0。而countDown()方法用于递减计数器。
下面是一个计算执行时间的例子:
import java.util.concurrent.CountDownLatch; public class CountDownLatchTest { public static Long getMillions(){ //相当于建立一个起跑线 final CountDownLatch startDownLatch = new CountDownLatch(1); //10个线程执行完后释放 final CountDownLatch endCountDownLatch = new CountDownLatch(10); for(int i=0;i<10;i++){ Thread thread = new Thread(new Runnable() { @Override public void run() { try { //等待startDownLatch中的技术器减到0 startDownLatch.await(); System.out.println(Thread.currentThread().getName()); } catch (InterruptedException e) { e.printStackTrace(); }finally { //endCountDownLatch中的计数器减一 endCountDownLatch.countDown(); } } }); thread.start(); } Long startMillions = System.currentTimeMillis(); //所有线程开始执行 startDownLatch.countDown(); try { //所有线程执行完后,当endCountDownLatch的计数器等于0时释放 endCountDownLatch.await(); System.out.println(System.currentTimeMillis()-startMillions); } catch (InterruptedException e) { e.printStackTrace(); } return null; } public static void main(String[] args) { getMillions(); } }
发表评论
-
读ThreadLocal源代码
2017-10-12 15:00 239//可以存取线程局部变量 //先看构造函数 pub ... -
读Exchanger源码
2017-10-10 11:38 331//用于线程间交换数据 public V exchang ... -
读Executors源码
2017-09-29 15:23 260//一个管理线程创建的类里面都是静态方法 //创建一 ... -
读ScheduledThreadPoolExecutor源码
2017-09-25 17:33 412//一个可以延迟执行的定时任务 //先看构造函数 构造函 ... -
读部分ThreadPoolExecutor源码
2017-09-25 15:27 304//线程池 //先看构造方法 public Threa ... -
读AbstractExecutorService
2017-09-23 16:34 323//他是ExecutorService的部分实现 pub ... -
读ExecutorCompletionService源码
2017-09-23 11:22 485//一个用来管理已完成任务的service,内部封装了一个 ... -
读FutureTask源码
2017-09-22 16:45 269//一个可以异步返回计算的结果 //它同时实现了Futu ... -
读ConcurrentSkipListMap源码
2017-09-21 15:11 289//数据结构是跳表 关于数据结构http://blog.c ... -
读Semaphore源码
2017-09-09 14:58 292//一个信号量,只有在池中还拥有许可时才允许线程继续执行。 ... -
读CyclicBarrier源码
2017-09-01 17:59 344//一个循环的屏障。所有的线程在屏障处等待其他线程执行完毕 ... -
读CountDownLatch源码
2017-09-01 14:01 321//在完成一组操作之前允许一个或多个线程等待内部用的AQS ... -
读ConcurrentLinkedQueue
2017-09-01 11:40 286//这是一个无阻塞的队列没有加任何锁全部利用CAS机制实现 ... -
读ConcurrentHashMap源码
2017-08-31 11:21 273//先看构造函数 public ConcurrentHa ... -
读CopyOnWriteArrayList源码
2017-08-22 12:59 407//在该集合上的写操作都是在原有的副本上进行的操作。这样可 ... -
读LinkedBlockingDeque源码
2017-08-21 14:26 561//这是一个支持双端操作的可阻塞队列 //先看构造函数 ... -
读SynchronousQueue源码
2017-08-10 10:51 374//先看构造方法 public SynchronousQ ... -
读PriorityBlocking源码
2017-08-09 13:47 353//一个基于而为堆的优先级队列,它是无界的。 //先看构 ... -
读DelayQueen源码
2017-08-07 15:16 274//一个基于二叉堆优先 ... -
LinkedblockingQueue源码解读
2017-08-04 13:03 348//LinkedBlockQueue //先看构造函数 ...
相关推荐
CountDownLatch是Java并发编程中一个重要的工具类,它属于java.util.concurrent包下的一个同步辅助类。这个类的设计目的是允许一个线程等待其他多个线程完成操作,然后再继续执行。CountDownLatch通常用于多线程协作...
在Java并发编程中,`CountDownLatch`是一个非常重要的工具类,它位于`java.util.concurrent`包下,用于协调多个线程间的同步。`CountDownLatch`的主要作用是允许一个或多个线程等待其他线程完成操作。在上述例子中,...
CountDownLatch的基本用法 2.1 创建CountDownLatch对象 2.2 await()方法 2.3 countDown()方法 实现多线程任务的同步 3.1 场景介绍 3.2 使用CountDownLatch实现同步 主线程等待多个线程完成 4.1 场景介绍 4.2 使用...
Java 提供了多种工具来实现这样的同步机制,其中之一便是 `CountDownLatch` 类。`CountDownLatch` 是一个计数器,可以用于协调多个线程间的活动,等待所有线程完成各自的任务后,主线程或其他线程才能继续执行。 ...
本文将详细介绍 CountDownLatch 的用法实例,通过示例代码来讲解其使用方法。 CountDownLatch 的主要方法 CountDownLatch 有两个主要方法:countDown() 和 await()。 1. countDown() 方法: public void ...
在Java并发编程中,`CountDownLatch`是一个同步辅助类,它允许多个线程等待其他线程完成操作。在批量插入数据的场景下,可以创建一个CountDownLatch对象,初始化为线程的数量,每个线程处理完自己的数据后调用`...
`CountDownLatch`是Java并发包`java.util.concurrent`中的一个重要工具类,用于实现线程间的同步。它基于计数器的概念,初始化时设置一个非负的计数值,然后通过调用`countDown()`方法来递减这个计数器。主线程或...
java并发编程中CountDownLatch和CyclicBarrier的使用借鉴 java并发编程中CountDownLatch和CyclicBarrier是两个非常重要的线程控制和调度工具,经常被用于解决多线程程序设计中的线程等待问题。本文将对...
在Java并发编程中,CountDownLatch和CyclicBarrier是两种非常重要的同步工具类,它们用于协调多个线程间的协作。这两个工具都是在`java.util.concurrent`包下,是Java并发库的重要组成部分。 **CountDownLatch** ...
在Java多线程编程中,CountDownLatch是一个非常重要的同步工具类,它可以帮助我们协调多个线程之间的交互。本文将深入探讨CountDownLatch的工作原理、使用场景以及相关源码分析。 CountDownLatch是一个计数器,初始...
Java 使用 CountDownLatch 等待多线程全部执行完成 CountDownLatch 是 Java 中的...CountDownLatch 是 Java 中一个非常强大且灵活的同步工具类,使用它可以轻松地实现多线程的同步操作,提高程序的执行效率和可靠性。
- `java.util.Date` 是旧版的日期时间API,使用不便,现在已经推荐使用`java.time`包中的类,如`LocalDate`, `LocalTime`, `LocalDateTime`, `ZonedDateTime`等,这些类提供了更强大和友好的日期时间操作。...
下面我们将深入探讨CountDownLatch的原理、使用方法以及与CyclicBarrier的区别。 首先,CountDownLatch的构造函数接受一个整数参数`count`,这个值表示计数器的初始值。当这个计数器归零时,所有等待在`await()`...
Java并发工具类是Java并发编程中的重要组成部分,其中包括了多种实用的工具,如CountDownLatch、Semaphore和Exchanger,这些工具类极大地简化了多线程环境下的同步和协调问题。 1. **CountDownLatch**: ...
在示例代码中,`CountDownLatchTest`类展示了如何使用`CountDownLatch`。它创建了一个名为`ComponentThread`的线程类,这个类代表了需要初始化的组件。每个`ComponentThread`都有一个唯一的ID,并且在构造时传入了一...
Java 中的 CountDownLatch 是一个同步辅助类,允许一个线程等待其他线程完成操作。它是一种非常有用的工具,用于在多线程环境中实现异步回调。在本文中,我们将学习如何使用 CountDownLatch 来完成异步回调实例,并...
CountDownLatch的使用方法: 1. 创建CountDownLatch对象:使用new关键字创建一个CountDownLatch对象,并指定线程的数量。 2. 等待线程执行完成:使用await()方法使得当前线程等待其他线程执行完成。 3. 唤醒阻塞...
JAVA多线程CountDownLatch使用详解 ...它可以让我们轻松地实现线程的同步,并且可以避免使用wait()和notify()方法这类复杂的同步机制。因此,在多线程编程中,我们应该尽量使用CountDownLatch来实现线程的同步。
- `java.util.concurrent` 包:包含`ExecutorService`, `Future`, `Semaphore`, `CountDownLatch`, `CyclicBarrier`等,提供线程池和同步工具类,简化多线程编程。 9. **其他工具类**: - `java.util.Random`:...
6. **反射**:在`java.lang.reflect`包中,反射机制允许程序在运行时检查和操作其他类的属性和方法,增加了代码的灵活性。 7. **国际化**:`java.text`和`java.util.Locale`提供了处理不同地区和语言的工具,支持...