多线程控制工具类--倒计时器CountDownLatch的使用(模仿火箭发射)

package com.thread.test.Lock;

import java.util.Random;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class CountDownLatchDemo implements Runnable {

    static final CountDownLatch end = new CountDownLatch(10);// 创建倒计时器,表示需要等待10个线程,等待在CountDownLatch上的线程才能继续执行
    static final CountDownLatchDemo DEMO = new CountDownLatchDemo();

    public void run() {
        try {
            Thread.sleep(new Random().nextInt(10) * 1000);
            System.out.println(Thread.currentThread().getName() + "----check complete");
            end.countDown();// 通知倒计时器一个线程完事儿,倒计时器减1
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws InterruptedException {
        // 使用倒计时器来模仿火箭发射
        ExecutorService exec = Executors.newFixedThreadPool(10);// 创建10个线程的线程池
        for (int i = 0; i < 10; i++) {
            exec.submit(DEMO);
        }
        end.await();// 倒计时器需要等待10个线程的任务全部完成后,主线程才能继续执行
        System.out.println("火箭发射");
        exec.shutdown();// 关闭线程池
    }

}

原文地址:https://www.cnblogs.com/java-spring/p/8336289.html

时间: 2024-11-15 05:57:35

多线程控制工具类--倒计时器CountDownLatch的使用(模仿火箭发射)的相关文章

多线程之倒计时器CountDownLatch和循环栅栏CyclicBarrier

1.倒计时器CountDownLatch CountDownLatch是一个多线程控制工具类.通常用来控制线程等待,它可以让一个线程一直等待知道计时结束才开始执行 构造函数: public CountDownLatch(int count) //count 计数个数 例如:在主线程中启动10个子线程去数据库中获取分页数据,需要等到所有线程数据都返回之后统一做统计处理 public class CountDownLatchDemo implements Runnable{ private stat

并发工具类:倒计时器-CountDownLatch

title: 并发工具类:倒计时器-CountDownLatch author: Enjoyitlife.top date: 2019-10-01 10:51:33 summary: JUC包中的工具类CountDownLatch到底给我们提供了什么功能? categories: Concurrent tags: Concurrent-Tools 并发工具类:倒计时器-CountDownLatch CountDownLatch是JDK1.5提供一个并发编程辅助类,用于控制一个和多个线程进行等待,

并发包下常见的同步工具类详解(CountDownLatch,CyclicBarrier,Semaphore)

目录 1. 前言 2. 闭锁CountDownLatch 2.1 CountDownLatch功能简介 2.2 使用CountDownLatch 2.3 CountDownLatch原理浅析 3.循环屏障CyclicBarrier 3.1 CyclicBarrier功能简介 3.2 使用CyclicBarrier 3.3 CyclicBarrier原理浅析 4. 信号量Semaphore 4.1 Semaphore功能简介 4.2 使用Semaphore进行最大并发数的控制 4.3 Semaph

J.U.C工具类中的CountDownLatch和CyclicBarrier

讲解CyclicBarrier       API文档是这样介绍的:一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点(common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此使CyclicBarrier很有用.因为该barrier在释放等待线程后可以重用,所以称它为循环的barrier.       CyclicBarrier 支持一个可选的 Runnable 命令,在一组线程中的最后一个线程到达之后(但在释放所有线程之前),该命

Java多线程同步工具类之CyclicBarrier

一.CyclicBarrier使用 CyclicBarrier从字面上可以直接理解为线程运行的屏障,它可以让一组线程执行到一个共同的屏障点时被阻塞,直到最后一个线程执行到指定位置,你设置的执行线程就会触发运行:同时CyclicBarrier相比与CountDownLatch,它是可以被重置的:下面我们通过一个简单例子看下CyclicBarrier的使用: 实例化一个CyclicBarrier对象并传入你要控制的线程内部: public static void main(String[] args

线程工具类 - CountDownLatch

CountDownLatch官方使用手册:http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html 一.原理 CountDownLatch是一个非常实用的多线程控制工具类.Count Down在英文中意为倒计时,Latch意为门闩,可以简单的将CountDownLatch称为倒计时器.门闩的含义是:把门锁起来,不让里面的线程跑出来.因此,这个工具通常用来控制线程等待,它可以让一个线程等待知道

倒计时:CountDownLatch(火箭发射前的准备)读书笔记

这是一个非常实用的多线程控制工具类,经典的场景就是 火箭发射,在火箭发射前,为了保证万无一失,往往还要进行各项设备,仪器的检查,只有等待所有的检查完毕后,引擎才能点火, CountDownLatch构造器接受一个整数作为参数,即当前这个计数器的计数个数. public CountDownLatch(int count) 下面这个简单是的示例,演示了CountDownLatch的使用. public class CountDownLatchDemo implements Runnable { st

25.大白话说java并发工具类-CountDownLatch,CyclicBarrier,Semaphore,Exchanger

1. 倒计时器CountDownLatch 在多线程协作完成业务功能时,有时候需要等待其他多个线程完成任务之后,主线程才能继续往下执行业务功能,在这种的业务场景下,通常可以使用Thread类的join方法,让主线程等待被join的线程执行完之后,主线程才能继续往下执行.当然,使用线程间消息通信机制也可以完成.其实,java并发工具类中为我们提供了类似"倒计时"这样的工具类,可以十分方便的完成所说的这种业务场景. 为了能够理解CountDownLatch,举一个很通俗的例子,运动员进行跑

3.1.5 倒计时器:CountDownLatch

package 第三章.倒计时器CountDownLatch; import java.util.concurrent.CountDownLatch; /** * Created by zzq on 2018/1/24. */public class CountDoenLatchTest implements Runnable{static CountDownLatch countDownLatch=new CountDownLatch(3); public void run() { try {