latch 英[lætʃ]
美[lætʃ]
n. 门闩; 弹簧锁;

锁是每个类的成员变量,它是这个类的固有属性,当然要声明为成员变量。

成员变量的初始化是通过对象的构造函数的。

锁是每个类的成员变量,它是这个类的固有属性,当然要声明为成员变量。

成员变量的初始化是通过对象的构造函数的。

锁是每个类的成员变量,它是这个类的固有属性,当然要声明为成员变量。

成员变量的初始化是通过对象的构造函数的。

12. 闭锁 CountDownLatch

java.util.concurrent.CountDownLatch 是一个并发构造,它允许一个或多个线程等待一系列指定操作的完成。
CountDownLatch 以一个给定的数量初始化。countDown() 每被调用一次,这一数量就减一。通过调用 await() 方法之一,线程可以阻塞等待这一数量到达零。

CountDownLatch 以一个给定的数量初始化。countDown() 每被调用一次,这一数量就减一。通过调用 await() 方法之一,线程可以阻塞等待这一数量到达零。
以下是一个简单示例。Decrementer 三次调用 countDown() 之后,等待中的 Waiter 才会从 await() 调用中释放出来。

    1. CountDownLatch latch = new CountDownLatch(3);
    2. Waiter      waiter      = new Waiter(latch);
    3. Decrementer decrementer = new Decrementer(latch);
    4. new Thread(waiter)     .start();
    5. new Thread(decrementer).start();
    6. Thread.sleep(4000);
    7. public class Waiter implements Runnable{
    8. CountDownLatch latch = null;
    9. public Waiter(CountDownLatch latch) {
    10. this.latch = latch;
    11. }
    12. public void run() {
    13. try {
    14. latch.await();
    15. } catch (InterruptedException e) {
    16. e.printStackTrace();
    17. }
    18. System.out.println("Waiter Released");
    19. }
    20. }
    21. public class Decrementer implements Runnable {
    22. CountDownLatch latch = null;
    23. public Decrementer(CountDownLatch latch) {
    24. this.latch = latch;
    25. }
    26. public void run() {
    27. try {
    28. Thread.sleep(1000);
    29. this.latch.countDown();
    30. Thread.sleep(1000);
    31. this.latch.countDown();
    32. Thread.sleep(1000);
    33. this.latch.countDown();
    34. } catch (InterruptedException e) {
    35. e.printStackTrace();
    36. }
    37. }
    38. }

cocurrent包countdownlatch 倒计时门栓的更多相关文章

  1. 源码分析:CountDownLatch 之倒计时门栓

    简介 CountDownLatch 是JDK1.5 开始提供的一种同步辅助工具,它允许一个或多个线程一直等待,直到其他线程执行的操作完成为止.在初始化的时候给定 CountDownLatch 一个计数 ...

  2. java 多线程 day16 CountDownLatch 倒计时计数器

    import java.util.concurrent.CountDownLatch;import java.util.concurrent.CyclicBarrier;import java.uti ...

  3. cocurrent包 原子性数据类型

    22. 原子性布尔 AtomicBoolean AtomicBoolean 类为我们提供了一个可以用原子方式进行读和写的布尔值,它还拥有一些先进的原子性操作,比如 compareAndSet().At ...

  4. cocurrent包 锁 Lock

    20. 锁 Lock java.util.concurrent.locks.Lock 是一个类似于 synchronized 块的线程同步机制.但是 Lock 比 synchronized 块更加灵活 ...

  5. cocurrent包ExecutorService线程池

    16. 执行器服务 ExecutorService java.util.concurrent.ExecutorService 接口表示一个异步执行机制,使我们能够在后台执行任务.因此一个 Execut ...

  6. java cocurrent包

    1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包.这个包包含有一系列能够让 Ja ...

  7. cocurrent包semaphore信号量

    semaphore英[ˈseməfɔ:(r)]美[ˈsɛməˌfɔr, -ˌfor]n. 臂板信号系统,(铁道)臂板信号装置; Semaphore 用法 信号量主要有两种用途: 保护一个重要(代码)部 ...

  8. Java并发总结

    Java并发 进程 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的.系统运行一个程序即是一个进程从创建,运行到消亡的过程. 在 Java 中,当我们启动 main 函数时其实就是 ...

  9. Java并发编程:Semaphore、CountDownLatch、CyclicBarrier

    首先我们来实现一个功能:当我们启动一个系统的时候需要初始化许多数据,这时候我们可能需要启动很多线程来进行数据的初始化,只有这些系统初始化结束之后才能够启动系统.其实在Java的类库中已经提供了Sema ...

随机推荐

  1. 第二阶段团队冲刺-five

    昨天: 用servlet完成名单打印功能. 今天: 完成打印名单的功能. 遇到的问题: 在jsp中调用java方法与在main函数中的测试结果一致.

  2. 如何出发匿名映射呀【log】

    malloc-9711 [002] .... 40794.642938: mm_vmscan_lru_shrink_inactive: nid=0 zid=1 nr_scanned=3 nr_recl ...

  3. ACM童年生活二三事

    描述 Redraiment小时候走路喜欢蹦蹦跳跳,他最喜欢在楼梯上跳来跳去. 但年幼的他一次只能走上一阶或者一下子蹦上两阶. 现在一共有N阶台阶,请你计算一下Redraiment从第0阶到第N阶共有几 ...

  4. CodeWarrior的map文件详解

    前言 map文件保存了你的整个程序编译链接后的各种信息,包括编译器链接器信息,内存分配信息,对象依赖等,每次编译链接程序后,这个文件都会被覆盖重新生成. 对我来说,它最主要的作用是它详尽的描述了整个程 ...

  5. c中结构体的4种定义

    1.常规的标准方式: 1 #include <stdio.h>  2   3 struct student{  4     int age;  5     float score;  6 ...

  6. java基础练习 18

    import java.util.Scanner; public class Eightheen { /*判断一个素数能被几个9整除*/ public static void main(String[ ...

  7. openshift 云平台基于kubernetes

    转载:https://www.kubernetes.org.cn/3208.html 目前红帽的核心产品PaaS平台OpenShift,最初在2012年释出时是使用自家开发的容器调度工具,但在2014 ...

  8. shiro多realm验证之——shiro实现不同身份使用不同Realm进行验证(转)

    转自: http://blog.csdn.net/xiangwanpeng/article/details/54802509 (使用特定的realm实现特定的验证) 假设现在有这样一种需求:存在两张表 ...

  9. cloudflare 301 重定向设置

    https://support.cloudflare.com/hc/en-us/articles/218411427#redirects 将 https://dfg.com/* 设置301重定向到 h ...

  10. C#中使用7Z进行压缩解压

    SevenZipSharp相关文档下载地址: http://sevenzipsharp.codeplex.com/releases/view/51254 1. 解决方案中添加引用:SevenZipSh ...