多线程基础之倒计时器CountDownLatch

多线程中倒计时器的基础使用

CountDownLatch倒计时器是一个非常实用的多线程控制类工具类,这个线程通常用来控制线程等待,它可以让一个线程或多个线程进行等待,一直到倒计时结束后再开始运行
CountDownLatch的构造函数接收的参数为int类型的整数,其中count表示当前需要有多少个线程被进行的等待控制
public CountDownLatch(int count)
下边的案例进行详细的解释说明
import org.junit.Test;

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

/**
 * 

Titel:CountDownLatchDemo

*

Description:倒计时器

* * @author TJR * @version 1.0 * @time 2017-12-31 23:00 */ @SuppressWarnings("all") public class CountDownLatchDemo implements Runnable { /** * 创建一个倒计时器实例 * 参数为10:表示有需要有10个线程完成任务 */ final static CountDownLatch COUNT_DOWN_LATCH = new CountDownLatch(10); /** * 创建倒计时对象,用于多线程测试 */ final static CountDownLatchDemo COUNT_DOWN_LATCH_DEMO = new CountDownLatchDemo(); @Override public void run() { try { // 进行线程等待 Thread.sleep(new Random().nextInt(10) * 1000); System.out.println("CheackComplete..."); // 一个线程已经完成任务,通知计时器减一 COUNT_DOWN_LATCH.countDown(); } catch (Exception e) { e.printStackTrace(); } } /** * 进行线程测试 * @param args * @throws InterruptedException */ @Test public void test() throws InterruptedException { ExecutorService executorService = Executors.newFixedThreadPool(10); // 进行循环调用,模拟多线程 for (int num = 0; num < 10; num++) { // 调用倒计时对象进行多线程测试 executorService.submit(COUNT_DOWN_LATCH_DEMO); } // 主线程进行等待,等待所有线程完成任务后主线程继续执行 COUNT_DOWN_LATCH.await(); // 倒计时完成 System.out.println("Fire..."); // 线程终止 executorService.shutdown(); } }
    从上述案例的测试结果中可以看出主线程在等待所有参与倒计时的线程都执行完成后继续执行,可以很好的控制多个线程的执行

你可能感兴趣的:(多线程基础之倒计时器CountDownLatch)