`

JUC-CountDownLatch笔记

 
阅读更多
1.CountDownLatch简介
CountDownLatch是一个同步辅助类,完成指定线程数量之前,同步等待其他线程完成,个人感觉和计数器差不多。

2.CountDownLatch示例


import java.util.concurrent.CountDownLatch;

/**
 * Created by wuhao on 15-12-23.
 */
public class CountDownLatchDemo {
    public static void main(String[] args) {
        //计数器数值为3,工作线程数
        CountDownLatch countDownLatch=new CountDownLatch(3);
        WorkThread workThread1 = new WorkThread(1, 10, "张三", countDownLatch);
        WorkThread workThread2 = new WorkThread(2, 1, "李四", countDownLatch);
        WorkThread workThread3 = new WorkThread(3, 4, "王五", countDownLatch);
        workThread1.start();
        workThread2.start();
        workThread3.start();
        try {
            countDownLatch.await();
            System.out.println("All Thread Complete: ");
        } catch (InterruptedException e) {
            System.out.println("countDownLatch.await() Error");
        }
    }
}
class WorkThread extends Thread{
    private int index;
    private int time;
    private String name;
    private CountDownLatch countDownLatch;

    public WorkThread(int index, int time , String name, CountDownLatch countDownLatch) {
        this.index = index;
        this.time = time;
        this.name = name;
        this.countDownLatch = countDownLatch;
    }

    @Override
    public void run() {
        System.out.println("Thread Index: " + index + ", Name: " + name + " Start");
        try {
            Thread.sleep(time * 1000);
        } catch (InterruptedException e) {
            System.out.println("Thread.sleep(2000) Error");
        }
        System.out.println("Thread Index: " + index + ", Name: " + name + " End");
        countDownLatch.countDown(); //计数器-1
    }
}

输出结果:
1.计数器数值为3
Thread Index: 1, Name: 张三 Start
Thread Index: 2, Name: 李四 Start
Thread Index: 3, Name: 王五 Start
Thread Index: 2, Name: 李四 End
Thread Index: 3, Name: 王五 End
Thread Index: 1, Name: 张三 End
All Thread Complete: 
三个工作线程结束后触发

2.计数器数值为2
Thread Index: 1, Name: 张三 Start
Thread Index: 2, Name: 李四 Start
Thread Index: 3, Name: 王五 Start
Thread Index: 2, Name: 李四 End
Thread Index: 3, Name: 王五 End
All Thread Complete: 
Thread Index: 1, Name: 张三 End
两个工作线程结束后触发

3.计数器数值为4
Thread Index: 1, Name: 张三 Start
Thread Index: 2, Name: 李四 Start
Thread Index: 3, Name: 王五 Start
Thread Index: 2, Name: 李四 End
Thread Index: 3, Name: 王五 End
Thread Index: 1, Name: 张三 End
一直未触发
分享到:
评论

相关推荐

    个人学习-JUC-笔记

    本笔记主要围绕尚硅谷周阳老师的JUC课程展开,旨在帮助个人学习者深入理解和掌握Java并发编程的核心知识。 1. **并发基础** - **线程与进程**:线程是程序执行的最小单位,进程则是资源分配的基本单位。了解它们的...

    juc尚硅谷-自学笔记

    《juc尚硅谷-自学笔记》是一份针对Java并发编程领域的深入学习资料,主要涵盖了Java Concurrency Utility(juc)包中的核心概念和技术。在这个压缩包中,"尚硅谷juc"很可能包含了视频教程、课件或者讲义,旨在帮助...

    个人学习JUC代码笔记总集

    这个压缩包文件“个人学习JUC代码笔记总集”显然是一个个人的学习资源,记录了对JUC组件的理解和应用实例,特别适合已经有一定Java基础,想要深入学习并发编程的开发者。 JUC的主要目标是简化并发编程,提高多线程...

    哔哩哔哩JUC狂老师笔记.zip

    "哔哩哔哩JUC狂老师笔记.zip"中的笔记内容,显然聚焦于讲解如何有效地利用JUC库来提升并发性能和程序的正确性。下面,我们将深入探讨JUC中的关键知识点。 1. **锁机制**: - **synchronized**:Java内置的关键字,...

    常见的Java笔试题-JVM-JUC-Core:JUCJVM核心知识点

    JUC、JMM核心知识点笔记 尚硅谷周阳老师课程——笔记。 / / JUC知识点 JMM volatile关键字 可见性 原子性 有序性 哪些地方用到过volatile? 单例模式的安全问题 CAS CAS底层原理 CAS缺点 ABA问题 AtomicReference ...

    狂神JUC并发笔记大全+Linux等资料

    JUC(Java Util Concurrency)是Java提供的并发工具包,包含了许多高级并发组件,如Semaphore(信号量)、CyclicBarrier(回环栅栏)、CountDownLatch(计数器门锁)等,它们极大地简化了并发编程的复杂性。"狂神JUC...

    【学习笔记】JUC基础基础程序

    本学习笔记将深入探讨JUC的基础知识,帮助你理解和掌握Java并发编程的核心概念。 在Java中,多线程是实现并发的主要方式。一个线程是程序执行的一个流,多线程则意味着一个程序内可以同时执行多个线程。Java提供了...

    JUC并发编程学习笔记(硅谷)

    "JUC并发编程学习笔记(硅谷)"很可能包含了关于Java并发工具集(Java Util Concurrency, JUC)的深入理解和实战经验。JUC是Java标准库提供的一套强大的并发处理工具,它极大地简化了多线程编程,提高了程序的可读性...

    JUC学习笔记(Java多线程)

    本笔记将深入探讨JUC的相关知识点,帮助开发者理解并掌握Java多线程的核心概念。 首先,我们来了解一下Java线程。线程是程序执行的基本单元,允许多个任务在同一时间运行,从而提高了系统资源的利用率。在Java中,...

    JUC多线程学习个人笔记

    5. **并发工具类**:JUC还包含了一些并发编程的实用工具,如Semaphore(信号量,用于限制同时访问某个资源的线程数量),CountDownLatch(计数下标,用于等待一组线程完成任务),CyclicBarrier(循环栅栏,使一组...

    jvm-juc:jvm学习笔记

    6. CyclicBarrier和CountDownLatch:同步辅助类,CyclicBarrier用于多线程同步到达某一点后一起开始下一个阶段,而CountDownLatch用于一次性阻塞多个线程,直到计数到零。 7. Semaphore:信号量,用于限制同时访问...

    狂神说JUC代码狂神说JUC代码

    【狂神说JUC代码】是一系列专注于Java并发编程(JUC,Java Util Concurrency)的教程或笔记,旨在帮助开发者深入理解并掌握Java平台上的并发处理机制。JUC是Java标准库中的一组高级并发工具类,为多线程环境下的程序...

    并发编程、juc工具包源码分析笔记

    Java 并发库(Java Util Concurrency, JUC)是 Java 平台中用于处理并发问题的核心工具包,提供了丰富的类和接口来简化并发编程。 在计算机系统中,进程是操作系统资源分配的基本单位,它拥有独立的内存空间,而...

    JUC高并发编程详细讲解 狂神笔记pdf 从入门到入坟 请与狂神视频配套使用

    在实际开发中,JUC提供了许多工具,如`ExecutorService`线程池、`Semaphore`信号量、`CyclicBarrier`循环屏障、`CountDownLatch`计数器门闩等,以帮助开发者更有效地管理和控制并发执行。通过深入学习狂神的笔记和...

    周阳大神高级+面试经验+Java面试题.txt

    - **CountDownLatch**:用来等待一组操作完成,构造函数设置的计数器的值减至0之前,其他线程将一直处于等待状态。 - **CyclicBarrier**:可以实现让一组线程等待至某个状态之后再全部同时执行。 - **Semaphore**:...

    记录一些自己学习MySQL,JUC,JVM的学习笔记.zip

    3. 高级并发组件:探索Semaphore(信号量),CyclicBarrier(循环栅栏),CountDownLatch(计数门锁)和 Phaser(同步阶段)等并发工具。 4. concurrent包中的容器:了解ConcurrentHashMap,ConcurrentLinkedQueue...

    尚硅谷大厂面试题第二季周阳主讲整理笔记

    【Java基础】 Java语言是面向对象的...总结:本篇笔记涵盖了Java基础、集合框架、并发编程和设计模式等多个方面,是准备Java后端开发面试的重要参考资料。深入理解这些知识点,有助于在面试中展现出扎实的技术功底。

    狂神说全部笔记内容.zip

    根据提供的文件列表,我们可以了解到这些笔记详细讲解了多个关键知识点,包括JVM(Java虚拟机)、Java并发编程(JUC)、消息中间件ActiveMQ、数据库缓存系统Redis、微服务框架Spring Cloud、全文搜索引擎Elastic...

    redis、activemq、juc、jvm、gc等知识点的脑图.rar

    ConcurrentHashMap是线程安全的哈希表,ReentrantLock是可重入的互斥锁,CountDownLatch和CyclicBarrier是同步辅助类,用于控制多个线程的协作。 脑图是一种图形化的学习工具,能帮助我们组织和理解复杂的信息。在...

    Thread基础知识点笔记总结

    CountDownLatch 是 Juc 架包下的一种同步工具,用于等待一组线程的完成。只有在给定的数字变为 0 之后,await 才会执行下一步。 8. CyclicBarrier CyclicBarrier 是 Juc 架包下的一种同步工具,用于等待一组线程的...

Global site tag (gtag.js) - Google Analytics