4 CountDownLatch

(1)private static CountDownLatch latch = new CountDownLatch(3);

(2)latch.countDown();

(3)latch.await();

import java.util.concurrent.CountDownLatch;

public class text{

   /**      * 模拟爸爸去饭店      */

  public static void fatherToRes() {

    System.out.println("爸爸步行去饭店需要3小时。");

  }

  /**      * 模拟我去饭店      */

  public static void motherToRes() {

    System.out.println("妈妈挤公交去饭店需要2小时。");

  }

  /**      * 模拟妈妈去饭店      */

  public static void meToRes() {

    System.out.println("我乘地铁去饭店需要1小时。");

  }

  /**      * 模拟一家人到齐了      */

  public static void togetherToEat() {

    System.out.println("一家人到齐了,开始吃饭");        

  }

  private static CountDownLatch latch = new CountDownLatch(3);

  public static void main(String[] args) throws InterruptedException {

    new Thread() {

      public void run() {

        fatherToRes();

        latch.countDown();

      };

    }.start();

    new Thread() {

      public void run() {

        motherToRes();

        latch.countDown();

      ;

    }.start();

    new Thread() {

      public void run(){

        meToRes();

        latch.countDown();

      };

    }.start();

    latch.await();

    togetherToEat();

  }

}

时间: 2024-12-23 07:01:32

4 CountDownLatch的相关文章

java多线程 -- CountDownLatch 闭锁

CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待.闭锁可以延迟线程的进度直到其到达终止状态,闭锁可以用来确保某些活动直到其他活动都完成才继续执行: 确保某个计算在其需要的所有资源都被初始化之后才继续执行; 确保某个服务在其依赖的所有其他服务都已经启动之后才启动; 等待直到某个操作所有参与者都准备就绪再继续执行. package com.company; import java.util.concurrent.CountDownLa

java计数器CountDownLatch

CountDownLatch里面有个属性为state,当为零时触发代码往下执行,代码如下: package threadLock; import java.util.Random; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class CountDownLatchTest

【JAVA并发编程实战】4、CountDownLatch

这是一个计数锁,说白了,就是当你上锁的时候,只有计数减少到0的时候,才会释放锁 package cn.xf.cp.ch05; public class TaskRunable implements Runnable { @Override public void run() { System.out.println("do something..."); } public static void main(String []args) { Thread t = new Thread(n

CountDownLatch

CountDownLatch 1.类介绍 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待.用给定的计数 初始化 CountDownLatch.由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞.之后,会释放所有等待的线程,await 的所有后续调用都将立即返回.这种现象只出现一次——计数无法被重置. 一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行 2.使用场景 在一些应用场合中,需要等待某个条件

Java Concurrency - 浅析 CountDownLatch 的用法

CountDownLatch 是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 用给定的计数初始化 CountDownLatch.由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞.之后,会释放所有等待的线程,await 的所有后续调用都将立即返回.这种现象只出现一次——计数无法被重置.如果需要重置计数,请考虑使用 CyclicBarrier. CountDownLatch 是一个通用同步工具,它有很多用途.将

浅析Java中CountDownLatch用法

/** CountDownLatch类是一个同步计数器,构造时传入int参数,该参数就是计数器的初始值,每调用一次countDown()方法,计数器减1,计数器大于0 时,await()方法会阻塞程序继续执行 CountDownLatch如其所写,是一个倒计数的锁存器,当计数减至0时触发特定的事件.利用这种特性,可以让主线程等待子线程的结束.下面以一个模拟运动员比赛的例子加以说明. */ import java.util.concurrent.CountDownLatch; import jav

java 线程 新类库中的构件 countDownLatch 使用

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlhbmdydWkxOTg4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > package org.rui.thread.newc; import java.util.Random; import java.util.concurrent.CountDownLatch; import java.

CountDownLatch(闭锁)

一.闭锁(Latch)    闭锁(Latch):一种同步方法,可以延迟线程的进度直到线程到达某个终点状态.通俗的讲就是,一个闭锁相当于一扇大门,在大门打开之前所有线程都被阻断,一旦大门打开所有线程都将通过,但是一旦大门打开,所有线程都通过了,那么这个闭锁的状态就失效了,门的状态也就不能变了,只能是打开状态.也就是说闭锁的状态是一次性的,它确保在闭锁打开之前所有特定的活动都需要在闭锁打开之后才能完成. 应用场景: 1.确保某个计算在其需要的所有资源都被初始化之后才继续执行.二元闭锁(包括两个状态

Java 并发同步器之CountDownLatch、CyclicBarrier

一.简介 1.CountDownLatch是一个同步计数器,构造时传入int参数,该参数就是计数器的初始值,每调用一次countDown()方法,计数器减1,计数器大于0 时,await()方法会阻塞程序的执行. CountDownLatch可以看作是一个倒计数的锁存器,当计数减至0时触发特定的事件.利用这种特性,可以让主线程等待子线程的结束. CountDownLatch最重要的方法是countDown()和await(),前者主要是倒数一次,后者是等待倒数到0,如果没有到达0,就只有阻塞等待

深入浅出 Java Concurrency (10): 锁机制 part 5 闭锁 (CountDownLatch)[转]

此小节介绍几个与锁有关的有用工具. 闭锁(Latch) 闭锁(Latch):一种同步方法,可以延迟线程的进度直到线程到达某个终点状态.通俗的讲就是,一个闭锁相当于一扇大门,在大门打开之前所有线程都被阻断,一旦大门打开所有线程都将通过,但是一旦大门打开,所有线程都通过了,那么这个闭锁的状态就失效了,门的状态也就不能变了,只能是打开状态.也就是说闭锁的状态是一次性的,它确保在闭锁打开之前所有特定的活动都需要在闭锁打开之后才能完成. CountDownLatch是JDK 5+里面闭锁的一个实现,允许一