`

java CountDownLatch

    博客分类:
  • java
 
阅读更多
import java.util.Date;
import java.util.concurrent.CountDownLatch;

public class ThreadCountDownLatchDemo implements Runnable{
	CountDownLatch startLatch;
	CountDownLatch endLatch;
	int i;
	public ThreadCountDownLatchDemo(CountDownLatch startLatch,int i,CountDownLatch endLatch){
		this.startLatch=startLatch;
		this.endLatch=endLatch;
		this.i=i;
	}
	
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		try {
			startLatch.await();//等待主线程countDown,不然线程一直等待
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(i+"---------------------------------------"+new Date());
		endLatch.countDown();
	}
	
	
	public static void main(String[] args) {
		int i=10;
		final CountDownLatch startLatch=new CountDownLatch(1);
		final CountDownLatch endLatch=new CountDownLatch(i);
		for (int j=1 ; j <= i; j++) { 
			// 这里类似首先做了10个线程在那里,startLatch传入到线程中,然后再线程中startLatch.await,等待,等待主线程给启动命令这里startLatch设置成了1
			Thread t = new Thread(new ThreadCountDownLatchDemo(startLatch, j, endLatch));
			t.start();
		}
		startLatch.countDown();//这里处理了startLatch的1 变成了0 变成0就代表可以通过,也就是那10个线程开始工作的通知
		try {
			//await()才是CountDownLatch里相应的等待函数。
			//wait()是同步锁,是Object类的方法,与notify()配对使用的,使用时必须要有sychronized关键字。
			//endLatch.wait();
			endLatch.await();//然后主线程在这里等待其他子线程运行结束,都结束了就返回0 这样他才可以继续往下面运行
			System.out.println(new Date());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

分享到:
评论

相关推荐

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

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

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

    JAVA CountDownLatch(倒计时计数器)用法实例 在 Java 中,CountDownLatch 是一种同步工具,允许一个或多个线程等待其他线程完成任务。它是一种倒计时器,使用计数来控制线程的执行顺序。本文将详细介绍 ...

    JAVA CountDownLatch与thread-join()的区别解析

    JAVA CountDownLatch与thread-join()的区别解析 JAVA 中的线程同步机制是非常重要的,CountDownLatch 和 thread-join() 是两种常用的线程同步方法,本文将详细介绍它们之间的区别。 首先, thread-join() 方法是...

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

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

    多线程countDownLatch方法介绍

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

    利用 CountDownLatch 类实现线程同步

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

    CountDownLatch学习用法

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

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

    在Java并发编程中,CountDownLatch和CyclicBarrier都是用于协调多线程间同步的重要工具,它们可以帮助开发者在特定条件满足时启动或者结束线程的执行。本文将详细探讨这两个类的内部实现机制以及它们在实际应用场景...

    CountDownLatchDemo

    这是一个对于Java CountDownLatch的简单Demo CountDownLatch一个同步辅助类 在完成一组正在其他线程中执行的操作之前 它允许一个或多个线程一直等待 用给定的计数 初始化 CountDownLatch 由于调用了 countDown 方法 ...

    27 倒数计时开始,三、二、一—CountDownLatch详解.pdf

    CountDownLatch 是 Java 中一个强大的并发工具类,常用于线程间的协调与同步。它由 Java Concurrency Utilities (JCU) 包中的 `java.util.concurrent` 类库提供。CountDownLatch 的核心功能是允许一个或多个线程等待...

    java利用CountDownLatch实现并行计算

    Java 利用 CountDownLatch 实现并行计算 Java 中的并行计算是一个非常重要的概念,为了提高计算速度和效率,Java 提供了一些工具和类来实现并行计算。CountDownLatch 就是一个非常重要的工具类,它可以帮助我们实现...

    java大批量导入excel,多线程加分片处理的dome

    ### Java大批量导入Excel:多线程加分片处理详解 #### 概述 在实际工作中,经常需要批量处理大量的Excel数据。当面对成千上万甚至百万级别的数据时,简单的单线程处理方式往往无法满足效率的需求。为了解决这个...

    Java并发工具类示例

    本文将详细解析Java并发工具类,并通过示例代码介绍`CountDownLatch`、`CyclicBarrier`、`Phaser`、`Semaphore`和`ThreadLocal`的用法。 1. **CountDownLatch** `CountDownLatch`是一个计数器,通常用于等待多个...

    JAVA多线程的实例

    Java并发包`java.util.concurrent`提供了高级并发工具,如`Semaphore`(信号量)、`CyclicBarrier`(回环栅栏)、`CountDownLatch`(计数器门闩)等,它们可以更灵活地控制线程执行。例如,`CountDownLatch`常用于...

    Java多线程--等待所有子线程执行完的五种方法.docx

    `CountDownLatch`是Java并发包(`java.util.concurrent`)中的一个工具类,它允许一个或多个线程等待其他线程完成操作。创建一个计数器为N的`CountDownLatch`,每当一个线程完成其任务时,都会调用`countDown()`,...

    Java中CountDownLatch用法解析

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

    java多线程之A线程等B、C线程都执行完在执行的结果示例

    Java多线程编程是开发高并发应用的关键技术之一,它涉及到如何有效地利用系统资源,提高程序的执行效率。在这个场景中,我们关注的是一个特定的多线程问题:A线程需要等待B线程和C线程执行完毕后再开始执行,同时...

    java同步(一个网页)

    Java同步是Java编程中一个非常重要的概念,主要涉及到多线程环境下的程序控制。在Java中,当多个线程同时访问共享资源时,如果没有适当的同步机制,可能会导致数据不一致、竞态条件等问题。同步机制确保了在特定时间...

    JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程

    ### JAVA并发编程与高并发解决方案 #### 一、并发编程基础 ##### 1.1 并发的概念 在计算机科学中,并发是指多个任务或进程同时进行的现象。它不同于并行,后者指的是多个处理器或核心同时执行不同的指令。在Java中...

    几个java线程的例子

    Java线程是多任务编程的重要组成部分,特别是在现代计算环境中,多核处理器的广泛使用使得并发执行成为提升系统性能的关键。本篇文章将详细讲解几个Java线程的实例,帮助你深入理解这一关键概念。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics