`

java CountDownLatch类的用法

阅读更多
CountDownLatch类中维护了一个计数器,当计数器为0时,释放所有线程。这个类可以用于当所有的资源都初始化后进行操作。

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();
	}
}

分享到:
评论

相关推荐

    CountDownLatch学习用法

    CountDownLatch是Java并发编程中一个重要的工具类,它属于java.util.concurrent包下的一个同步辅助类。这个类的设计目的是允许一个线程等待其他多个线程完成操作,然后再继续执行。CountDownLatch通常用于多线程协作...

    Java中CountDownLatch用法解析

    在Java并发编程中,`CountDownLatch`是一个非常重要的工具类,它位于`java.util.concurrent`包下,用于协调多个线程间的同步。`CountDownLatch`的主要作用是允许一个或多个线程等待其他线程完成操作。在上述例子中,...

    Java中的CountDownLatch类最全讲义

    CountDownLatch的基本用法 2.1 创建CountDownLatch对象 2.2 await()方法 2.3 countDown()方法 实现多线程任务的同步 3.1 场景介绍 3.2 使用CountDownLatch实现同步 主线程等待多个线程完成 4.1 场景介绍 4.2 使用...

    利用 CountDownLatch 类实现线程同步

    Java 提供了多种工具来实现这样的同步机制,其中之一便是 `CountDownLatch` 类。`CountDownLatch` 是一个计数器,可以用于协调多个线程间的活动,等待所有线程完成各自的任务后,主线程或其他线程才能继续执行。 ...

    JAVA CountDownLatch(倒计时计数器)用法实例

    本文将详细介绍 CountDownLatch 的用法实例,通过示例代码来讲解其使用方法。 CountDownLatch 的主要方法 CountDownLatch 有两个主要方法:countDown() 和 await()。 1. countDown() 方法: public void ...

    mybaits 多线程 实现数据批量插入 (运用CountDownLatch实现闭锁)

    在Java并发编程中,`CountDownLatch`是一个同步辅助类,它允许多个线程等待其他线程完成操作。在批量插入数据的场景下,可以创建一个CountDownLatch对象,初始化为线程的数量,每个线程处理完自己的数据后调用`...

    Java并发包之CountDownLatch用法.docx

    `CountDownLatch`是Java并发包`java.util.concurrent`中的一个重要工具类,用于实现线程间的同步。它基于计数器的概念,初始化时设置一个非负的计数值,然后通过调用`countDown()`方法来递减这个计数器。主线程或...

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

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

    CountDownLatch和CyclicBarrier用法实例大全

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

    多线程countDownLatch方法介绍

    在Java多线程编程中,CountDownLatch是一个非常重要的同步工具类,它可以帮助我们协调多个线程之间的交互。本文将深入探讨CountDownLatch的工作原理、使用场景以及相关源码分析。 CountDownLatch是一个计数器,初始...

    java使用CountDownLatch等待多线程全部执行完成

    Java 使用 CountDownLatch 等待多线程全部执行完成 CountDownLatch 是 Java 中的...CountDownLatch 是 Java 中一个非常强大且灵活的同步工具类,使用它可以轻松地实现多线程的同步操作,提高程序的执行效率和可靠性。

    java工具类集合

    - `java.util.Date` 是旧版的日期时间API,使用不便,现在已经推荐使用`java.time`包中的类,如`LocalDate`, `LocalTime`, `LocalDateTime`, `ZonedDateTime`等,这些类提供了更强大和友好的日期时间操作。...

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

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

    java并发工具类(CountDownLatch+Semaphore+Exchanger)

    Java并发工具类是Java并发编程中的重要组成部分,其中包括了多种实用的工具,如CountDownLatch、Semaphore和Exchanger,这些工具类极大地简化了多线程环境下的同步和协调问题。 1. **CountDownLatch**: ...

    java线程并发countdownlatch类使用示例

    在示例代码中,`CountDownLatchTest`类展示了如何使用`CountDownLatch`。它创建了一个名为`ComponentThread`的线程类,这个类代表了需要初始化的组件。每个`ComponentThread`都有一个唯一的ID,并且在构造时传入了一...

    Java CountDownLatch完成异步回调实例详解

    Java 中的 CountDownLatch 是一个同步辅助类,允许一个线程等待其他线程完成操作。它是一种非常有用的工具,用于在多线程环境中实现异步回调。在本文中,我们将学习如何使用 CountDownLatch 来完成异步回调实例,并...

    CountDownLatch同步工具类使用详解

    CountDownLatch的使用方法: 1. 创建CountDownLatch对象:使用new关键字创建一个CountDownLatch对象,并指定线程的数量。 2. 等待线程执行完成:使用await()方法使得当前线程等待其他线程执行完成。 3. 唤醒阻塞...

    JAVA多线程CountDownLatch使用详解

    JAVA多线程CountDownLatch使用详解 ...它可以让我们轻松地实现线程的同步,并且可以避免使用wait()和notify()方法这类复杂的同步机制。因此,在多线程编程中,我们应该尽量使用CountDownLatch来实现线程的同步。

    比较全的java工具类

    - `java.util.concurrent` 包:包含`ExecutorService`, `Future`, `Semaphore`, `CountDownLatch`, `CyclicBarrier`等,提供线程池和同步工具类,简化多线程编程。 9. **其他工具类**: - `java.util.Random`:...

    java各个类的源代码

    6. **反射**:在`java.lang.reflect`包中,反射机制允许程序在运行时检查和操作其他类的属性和方法,增加了代码的灵活性。 7. **国际化**:`java.text`和`java.util.Locale`提供了处理不同地区和语言的工具,支持...

Global site tag (gtag.js) - Google Analytics