一个线程等待
CountDownLatch使用其await()等待其他线程完成(使用减值为0来判断是否完成)。
是一个线程等待多个线程(1-N)的锁工具。
以下为实例代码:
package com.common; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class CountdownLatchTest extends Thread { public final int countThd = 10; public CountDownLatch latch = new CountDownLatch(countThd); public static void main(String[] args) { CountdownLatchTest one = new CountdownLatchTest(); one.start(); System.out.println("^^^^^^^^mainmianmian^^^^^^^^^"); } public void run() { synchronized (this) { try { System.out.println("GoGoGoGoGoGoGoTOWork"); //Executor executor = Executors.newCachedThreadPool(); for(int i=0;i<this.countThd;i++) { ChildrenThread childt = new ChildrenThread(this.latch,i); Thread each = new Thread(childt); each.start(); //executor.execute(childt); } latch.await(); System.out.println("GoGoGoGoGoGoGoHomeNow"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //workForever(); } public void workForever() { } class ChildrenThread implements Runnable { CountDownLatch latch; int num; public ChildrenThread(CountDownLatch latch,int num) { this.latch = latch; this.num = num; } @Override public void run() { // TODO Auto-generated method stub try { System.out.println("**********have a rest "+num); Thread.sleep(1000); System.out.println("----------go back to work "+num); latch.countDown(); //CountdownLatchTest.this.latch.countDown(); //System.out.println("%%%%%%%%%%I want to go home"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
讲述的是一个实习小弟只能等其他员工都改完活才能回家的故事 ,Yes,he is me.
相关推荐
在Java并发编程中,CountDownLatch和CyclicBarrier是两种非常重要的同步工具类,它们用于协调多个线程间的协作。这两个工具都是在`java.util.concurrent`包下,是Java并发库的重要组成部分。 **CountDownLatch** ...
15. **并发编程**:Java提供了丰富的并发工具类,如CountDownLatch、CyclicBarrier、Semaphore等,实例将展示如何高效地管理并发任务。 通过逐一研究这些源码实例,不仅可以加深对Java语言的理解,还能提升实际编程...
Java CountDownLatch 完成异步回调实例详解 Java 中的 CountDownLatch 是一个同步辅助类,允许一个线程等待其他线程完成操作。它是一种非常有用的工具,用于在多线程环境中实现异步回调。在本文中,我们将学习如何...
JAVA CountDownLatch(倒计时计数器)用法实例 在 Java 中,CountDownLatch 是一种同步工具,允许一个或多个线程等待其他线程完成任务。它是一种倒计时器,使用计数来控制线程的执行顺序。本文将详细介绍 ...
在Java并发编程中,`CountDownLatch`是一个非常重要的工具类,它位于`java.util.concurrent`包下,用于协调多个线程间的同步。`CountDownLatch`的主要作用是允许一个或多个线程等待其他线程完成操作。在上述例子中,...
Java并发包`java.util.concurrent`提供了高级并发工具,如`Semaphore`(信号量)、`CyclicBarrier`(回环栅栏)、`CountDownLatch`(计数器门闩)等,它们可以更灵活地控制线程执行。例如,`CountDownLatch`常用于...
10. **并发库**:Java提供了丰富的并发工具类,如ExecutorService、Semaphore、CountDownLatch等,实例会展示如何高效地管理线程池和控制并发。 11. **Java IO/NIO**:NIO(New Input/Output)是Java的非阻塞I/O...
6. **多线程**:Java提供了丰富的多线程支持,源码中会包含Thread、Runnable接口的使用,以及同步机制如synchronized关键字、wait/notify机制和并发工具类(如Semaphore、CountDownLatch等)的实例。 7. **网络编程...
本资源“Java高级编程实例 100个”提供了丰富的实践案例,旨在帮助初学者深入理解并熟练应用这些高级特性。 1. **多线程**:在Java中,多线程是并发执行任务的基本方式。学习如何创建Thread类的子类,使用Runnable...
1. 创建一个CountDownLatch实例,初始化为线程数量。 2. 将数据分为多个批次,每个批次分配给一个线程处理。 3. 每个线程在开始执行前调用`latch.countDown()`,表示它已经准备好开始工作。 4. 线程执行数据插入操作...
15. **并发工具类**:Java并发包提供了一些实用工具,如ExecutorService、Semaphore、CountDownLatch等。实例可能包含如何有效管理并发任务的代码。 每个源码实例都对应一个特定主题,通过分析和实践这些例子,...
10. **并发工具**:如CountDownLatch、CyclicBarrier、Semaphore等,这些工具可以帮助构建复杂的并发程序,实例可能展示如何有效使用它们。 11. **Java 8及以后的新特性**:如Lambda表达式、Stream API、Optional类...
1. 初始化:通过`CountDownLatch(int count)`构造方法创建一个CountDownLatch实例,其中count参数表示计数器的初始值。 ```java CountDownLatch latch = new CountDownLatch(3); // 设置为3,表示有3个子任务 ``` 2....
Java中CountDownLatch进行多线程同步详解及实例代码 CountDownLatch是Java中的一种多线程同步辅助类,主要用来同步多个任务的执行。它允许一个或多个线程等待,直到一组正在其他线程中执行的操作完成。下面是对...
《Java经典实例(第2版)》是一本深入浅出的Java编程教程,它涵盖了Java语言的各个方面,旨在帮助读者掌握Java编程的核心技能,并通过实际的示例加深理解。PDF书籍部分提供了详尽的理论解释和清晰的代码展示,而源代码...
Java JDK实例开发宝典源代码是一份非常宝贵的资源,它涵盖了Java开发中的各种核心概念和技术。JDK(Java Development Kit)是Java编程的基础,包含了Java运行环境、编译器、调试器以及各种工具,是每个Java开发者...
Java并发包提供了如CountDownLatch、CyclicBarrier、Semaphore等并发工具类,用于协调多个线程间的协作。这些工具在分布式计算、并行任务调度等领域有广泛应用。 通过这些实例,学习者能够深入理解Java多线程编程,...
在"JAVA100例之实例64 JAVA线程间通讯"这个主题中,我们将深入探讨Java中实现线程间通信的几种主要方法。 1. **共享数据**:最直观的线程间通信方式是通过共享内存空间,即共享变量。只要对共享变量的操作是线程...
全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。 第1章 ...
这里可能需要用到Java的并发工具类,如CountDownLatch或者CyclicBarrier。 4. **利息计算**:根据银行的利率策略,定期计算并添加到账户余额中。这可能涉及到时间间隔的处理,可以使用Java的定时任务框架如...