- 浏览: 39612 次
文章分类
最新评论
1.CountDownLatch简介
CountDownLatch是一个同步辅助类,完成指定线程数量之前,同步等待其他线程完成,个人感觉和计数器差不多。
2.CountDownLatch示例
输出结果:
1.计数器数值为3
2.计数器数值为2
3.计数器数值为4
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 一直未触发
发表评论
-
JVM内存结构及分析
2017-07-16 19:38 563JVM内存模型 名称特征 ... -
JVM调优实例
2017-06-24 12:30 01.背景:由于最近上线新增业务模块,业务量要增加所以对上线服务 ... -
音视频编码转换-ffmpeg
2016-12-30 18:42 15781.前言 由于最近在做ios与android端需要做a ... -
git did not match any file(s) known to git
2016-04-23 23:49 31181.did not match any file(s) kno ... -
Static工具类线程安全问题
2016-01-08 11:39 23471.静态方法 无论是静态方法还是实例方法,在内存中都只 ... -
JavaThread-ThreadLocal笔记
2015-12-23 14:54 5321.ThreadLocal简介 早在JDK 1.2的版本中就提 ... -
Lambda表达式实现设计模式:命令模式
2015-10-13 09:59 707如何在使用Java 8 Lambda表达式的函数式编程方式时实 ... -
mysql 错误汇总
2015-08-12 16:49 4361.Mysql ERROR 1045 (28000): Acc ... -
Java注解
2015-08-07 11:25 01.@Retention(RetentionPolicy.RU ... -
Base64 编解码 工具类
2015-07-28 22:48 42871.工具类: import java.io.Uns ... -
HttpClient(发送字符串,multipart, 参数等)
2015-07-10 11:12 2083备注:httpclient4.5 发送MultiPart/Pa ... -
转载-搜索引擎实时秒级更新
2015-07-08 14:02 859搜索是很多用户在天 ... -
tomcat-定时任务
2015-03-30 15:27 6571.监听类 import java.util.Timer ... -
JVM-工作原理
2015-03-16 23:26 644一、 JVM的生命周期 1. J ... -
tomcat-启动时启动额外线程并控制线程状态
2015-02-04 18:22 675通过启动线程可以进行后台的操作 1.创建servlet ... -
Exception in thread "main" SoapFault - faultcode: 'soapenv:Server.userException'
2015-01-20 22:32 14281.抛出此类错误大部分都是服务端发布webservice调用出 ... -
Tomcat映射虚拟目录
2015-01-19 22:43 01.设置虚拟目录 <Host>标签</H ... -
android-运行java main方法
2014-12-30 16:10 7191.右键入口类(含有Main方法的)Run Configura ... -
Mybatis 常见错误汇总
2014-12-28 22:31 01.插入数据到数据库是异常 ### Cause: java.s ... -
jsoup
2014-12-17 00:25 01. package com.wuhao.itinfo ...
相关推荐
本笔记主要围绕尚硅谷周阳老师的JUC课程展开,旨在帮助个人学习者深入理解和掌握Java并发编程的核心知识。 1. **并发基础** - **线程与进程**:线程是程序执行的最小单位,进程则是资源分配的基本单位。了解它们的...
《juc尚硅谷-自学笔记》是一份针对Java并发编程领域的深入学习资料,主要涵盖了Java Concurrency Utility(juc)包中的核心概念和技术。在这个压缩包中,"尚硅谷juc"很可能包含了视频教程、课件或者讲义,旨在帮助...
这个压缩包文件“个人学习JUC代码笔记总集”显然是一个个人的学习资源,记录了对JUC组件的理解和应用实例,特别适合已经有一定Java基础,想要深入学习并发编程的开发者。 JUC的主要目标是简化并发编程,提高多线程...
"哔哩哔哩JUC狂老师笔记.zip"中的笔记内容,显然聚焦于讲解如何有效地利用JUC库来提升并发性能和程序的正确性。下面,我们将深入探讨JUC中的关键知识点。 1. **锁机制**: - **synchronized**:Java内置的关键字,...
JUC、JMM核心知识点笔记 尚硅谷周阳老师课程——笔记。 / / JUC知识点 JMM volatile关键字 可见性 原子性 有序性 哪些地方用到过volatile? 单例模式的安全问题 CAS CAS底层原理 CAS缺点 ABA问题 AtomicReference ...
JUC(Java Util Concurrency)是Java提供的并发工具包,包含了许多高级并发组件,如Semaphore(信号量)、CyclicBarrier(回环栅栏)、CountDownLatch(计数器门锁)等,它们极大地简化了并发编程的复杂性。"狂神JUC...
本学习笔记将深入探讨JUC的基础知识,帮助你理解和掌握Java并发编程的核心概念。 在Java中,多线程是实现并发的主要方式。一个线程是程序执行的一个流,多线程则意味着一个程序内可以同时执行多个线程。Java提供了...
"JUC并发编程学习笔记(硅谷)"很可能包含了关于Java并发工具集(Java Util Concurrency, JUC)的深入理解和实战经验。JUC是Java标准库提供的一套强大的并发处理工具,它极大地简化了多线程编程,提高了程序的可读性...
本笔记将深入探讨JUC的相关知识点,帮助开发者理解并掌握Java多线程的核心概念。 首先,我们来了解一下Java线程。线程是程序执行的基本单元,允许多个任务在同一时间运行,从而提高了系统资源的利用率。在Java中,...
5. **并发工具类**:JUC还包含了一些并发编程的实用工具,如Semaphore(信号量,用于限制同时访问某个资源的线程数量),CountDownLatch(计数下标,用于等待一组线程完成任务),CyclicBarrier(循环栅栏,使一组...
6. CyclicBarrier和CountDownLatch:同步辅助类,CyclicBarrier用于多线程同步到达某一点后一起开始下一个阶段,而CountDownLatch用于一次性阻塞多个线程,直到计数到零。 7. Semaphore:信号量,用于限制同时访问...
【狂神说JUC代码】是一系列专注于Java并发编程(JUC,Java Util Concurrency)的教程或笔记,旨在帮助开发者深入理解并掌握Java平台上的并发处理机制。JUC是Java标准库中的一组高级并发工具类,为多线程环境下的程序...
Java 并发库(Java Util Concurrency, JUC)是 Java 平台中用于处理并发问题的核心工具包,提供了丰富的类和接口来简化并发编程。 在计算机系统中,进程是操作系统资源分配的基本单位,它拥有独立的内存空间,而...
在实际开发中,JUC提供了许多工具,如`ExecutorService`线程池、`Semaphore`信号量、`CyclicBarrier`循环屏障、`CountDownLatch`计数器门闩等,以帮助开发者更有效地管理和控制并发执行。通过深入学习狂神的笔记和...
- **CountDownLatch**:用来等待一组操作完成,构造函数设置的计数器的值减至0之前,其他线程将一直处于等待状态。 - **CyclicBarrier**:可以实现让一组线程等待至某个状态之后再全部同时执行。 - **Semaphore**:...
3. 高级并发组件:探索Semaphore(信号量),CyclicBarrier(循环栅栏),CountDownLatch(计数门锁)和 Phaser(同步阶段)等并发工具。 4. concurrent包中的容器:了解ConcurrentHashMap,ConcurrentLinkedQueue...
【Java基础】 Java语言是面向对象的...总结:本篇笔记涵盖了Java基础、集合框架、并发编程和设计模式等多个方面,是准备Java后端开发面试的重要参考资料。深入理解这些知识点,有助于在面试中展现出扎实的技术功底。
根据提供的文件列表,我们可以了解到这些笔记详细讲解了多个关键知识点,包括JVM(Java虚拟机)、Java并发编程(JUC)、消息中间件ActiveMQ、数据库缓存系统Redis、微服务框架Spring Cloud、全文搜索引擎Elastic...
ConcurrentHashMap是线程安全的哈希表,ReentrantLock是可重入的互斥锁,CountDownLatch和CyclicBarrier是同步辅助类,用于控制多个线程的协作。 脑图是一种图形化的学习工具,能帮助我们组织和理解复杂的信息。在...
CountDownLatch 是 Juc 架包下的一种同步工具,用于等待一组线程的完成。只有在给定的数字变为 0 之后,await 才会执行下一步。 8. CyclicBarrier CyclicBarrier 是 Juc 架包下的一种同步工具,用于等待一组线程的...