深谈多并发计数器CountDownLatch(一)
来源:互联网 发布:淘宝卖包包的好店 编辑:程序博客网 时间:2024/06/02 06:27
概述
CountDownLatch是JAVA提供在java.util.concurrent包下的一个工具辅助类,也可以把它看成是一个计数器,其内部维护着一个count计数,只不过对这个计数器的操作都是原子操作,同时只能有一个线程去操作这个计数器,CountDownLatch通过构造函数传入一个初始计数值,调用者可以通过调用CounDownLatch对象的cutDown()方法,来使计数减1;如果调用对象上的await()方法,那么调用者就会一直阻塞在这里,直到别人通过cutDown方法,将计数减到0,才可以继续执行。
案列分析
package org.apache.commons.lang3;import java.util.concurrent.CountDownLatch;/**/** * @author xiefg * @create 2017-09-08 11:16 * @desc **/public class CountDownLatchDemo { /** * 参数数2,表示计数器计数为2 */ private final static CountDownLatch countDownLatch = new CountDownLatch(2); /** * 示例demo线程类 */ private static class DemoThread extends Thread { private final String demoThreadName; private final int demoSleepTime; public DemoThread(String name, int sleepTime) { demoThreadName = name; demoSleepTime = sleepTime; } @Override public void run() { System.out.println("[" + demoThreadName + "] started!"); try { Thread.sleep(demoSleepTime); } catch (InterruptedException e) { e.printStackTrace(); } countDownLatch.countDown(); System.out.println("[" + demoThreadName + "] end!"); } } /** * 示例线程类 */ private static class CountDownLatchThread extends Thread { @Override public void run() { System.out.println("[CountDownLatchThread] started!"); try { // 线程挂起 countDownLatch.await(); } catch (InterruptedException e) { } System.out.println("[CountDownLatchThread] end!"); } } public static void main(String[] args) throws Exception { // 执行 CountDownLatchThread new CountDownLatchThread().start(); // 运行两个工作线程 new DemoThread("DemoThread1", 5000).start(); // 工作线程2运行2秒 new DemoThread("DemoThread2", 2000).start(); }}
这里只是知道如何使用,接下来看看原理。
阅读全文
0 0
- 深谈多并发计数器CountDownLatch(一)
- 深谈多并发计数器CountDownLatch(二)
- Java7新特性(四)并发 3 CountDownLatch计数器对象
- java并发编程(一):计数器
- JAVA并发编程-障碍器CyclicBarrier,计数器CountDownLatch,信号量Semaphore
- java并发(一) CountDownLatch (在多个线程都结束后再去执行某个任务)
- 并发工具类(一)等待多线程完成的CountDownLatch
- 并发工具类(一)等待多线程完成的CountDownLatch
- 多线程计数器锁存器---CountDownLatch
- CountDownLatch:倒计时计数器
- 同步倒数计数器CountDownlatch
- Java中的计数器CountDownLatch
- java CountDownLatch 同步计数器
- CountDownLatch 计数器门闩
- CountDownLatch同步计数器
- Java多线程与并发库高级应用之倒计时计数器CountDownLatch
- 译 -- Java 并发编程(多线程)一 | Callable and Future | CountDownLatch | Runable
- java多线程并发(一)Semaphore,volatile,synchronized ,Lock, CyclicBarrier和CountDownLatch
- 基于vue-cli的vue项目之axios的使用4--并发请求
- Jni的笔记一,简单的通信
- HDU
- Jedis对redis的操作详解
- UML常用图的几种关系的总结
- 深谈多并发计数器CountDownLatch(一)
- 数学笔记——导数5(指数函数和对数函数的导数)
- 探究多个装饰器执行顺序
- Android蓝牙相关—蓝牙打印
- Glide 判断图片是否存在 以及获得宽高
- java入门篇
- Dev c++调试时停止工作解决方法
- 抓firefox上https请求
- Lua_协同程序_011