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与thread-join()的区别解析 JAVA 中的线程同步机制是非常重要的,CountDownLatch 和 thread-join() 是两种常用的线程同步方法,本文将详细介绍它们之间的区别。 首先, thread-join() 方法是...
在Java并发编程中,`CountDownLatch`是一个同步辅助类,它允许多个线程等待其他线程完成操作。在批量插入数据的场景下,可以创建一个CountDownLatch对象,初始化为线程的数量,每个线程处理完自己的数据后调用`...
在Java多线程编程中,CountDownLatch是一个非常重要的同步工具类,它可以帮助我们协调多个线程之间的交互。本文将深入探讨CountDownLatch的工作原理、使用场景以及相关源码分析。 CountDownLatch是一个计数器,初始...
Java 提供了多种工具来实现这样的同步机制,其中之一便是 `CountDownLatch` 类。`CountDownLatch` 是一个计数器,可以用于协调多个线程间的活动,等待所有线程完成各自的任务后,主线程或其他线程才能继续执行。 ...
CountDownLatch是Java并发编程中一个重要的工具类,它属于java.util.concurrent包下的一个同步辅助类。这个类的设计目的是允许一个线程等待其他多个线程完成操作,然后再继续执行。CountDownLatch通常用于多线程协作...
在Java并发编程中,CountDownLatch和CyclicBarrier都是用于协调多线程间同步的重要工具,它们可以帮助开发者在特定条件满足时启动或者结束线程的执行。本文将详细探讨这两个类的内部实现机制以及它们在实际应用场景...
这是一个对于Java CountDownLatch的简单Demo CountDownLatch一个同步辅助类 在完成一组正在其他线程中执行的操作之前 它允许一个或多个线程一直等待 用给定的计数 初始化 CountDownLatch 由于调用了 countDown 方法 ...
CountDownLatch 是 Java 中一个强大的并发工具类,常用于线程间的协调与同步。它由 Java Concurrency Utilities (JCU) 包中的 `java.util.concurrent` 类库提供。CountDownLatch 的核心功能是允许一个或多个线程等待...
Java 利用 CountDownLatch 实现并行计算 Java 中的并行计算是一个非常重要的概念,为了提高计算速度和效率,Java 提供了一些工具和类来实现并行计算。CountDownLatch 就是一个非常重要的工具类,它可以帮助我们实现...
### Java大批量导入Excel:多线程加分片处理详解 #### 概述 在实际工作中,经常需要批量处理大量的Excel数据。当面对成千上万甚至百万级别的数据时,简单的单线程处理方式往往无法满足效率的需求。为了解决这个...
本文将详细解析Java并发工具类,并通过示例代码介绍`CountDownLatch`、`CyclicBarrier`、`Phaser`、`Semaphore`和`ThreadLocal`的用法。 1. **CountDownLatch** `CountDownLatch`是一个计数器,通常用于等待多个...
Java并发包`java.util.concurrent`提供了高级并发工具,如`Semaphore`(信号量)、`CyclicBarrier`(回环栅栏)、`CountDownLatch`(计数器门闩)等,它们可以更灵活地控制线程执行。例如,`CountDownLatch`常用于...
`CountDownLatch`是Java并发包(`java.util.concurrent`)中的一个工具类,它允许一个或多个线程等待其他线程完成操作。创建一个计数器为N的`CountDownLatch`,每当一个线程完成其任务时,都会调用`countDown()`,...
在Java并发编程中,`CountDownLatch`是一个非常重要的工具类,它位于`java.util.concurrent`包下,用于协调多个线程间的同步。`CountDownLatch`的主要作用是允许一个或多个线程等待其他线程完成操作。在上述例子中,...
Java多线程编程是开发高并发应用的关键技术之一,它涉及到如何有效地利用系统资源,提高程序的执行效率。在这个场景中,我们关注的是一个特定的多线程问题:A线程需要等待B线程和C线程执行完毕后再开始执行,同时...
Java同步是Java编程中一个非常重要的概念,主要涉及到多线程环境下的程序控制。在Java中,当多个线程同时访问共享资源时,如果没有适当的同步机制,可能会导致数据不一致、竞态条件等问题。同步机制确保了在特定时间...
### JAVA并发编程与高并发解决方案 #### 一、并发编程基础 ##### 1.1 并发的概念 在计算机科学中,并发是指多个任务或进程同时进行的现象。它不同于并行,后者指的是多个处理器或核心同时执行不同的指令。在Java中...
Java线程是多任务编程的重要组成部分,特别是在现代计算环境中,多核处理器的广泛使用使得并发执行成为提升系统性能的关键。本篇文章将详细讲解几个Java线程的实例,帮助你深入理解这一关键概念。 首先,我们需要...