1. 程式人生 > >多線程控制工具類--倒計時器CountDownLatch的使用(模仿火箭發射)

多線程控制工具類--倒計時器CountDownLatch的使用(模仿火箭發射)

-- nbsp sys inter 線程池 main except import 計時

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();// 關閉線程池 } }

多線程控制工具類--倒計時器CountDownLatch的使用(模仿火箭發射)