CountDownLatch 使用方法

CountDownLatch 使用方法

import java.util.concurrent.CountDownLatch;

public class TestCountDownLatch {

    public static void main(String[] args) {
        testCountDownLatch();
    }

    public static void testCountDownLatch() {

        int threadCount = 10;

        final CountDownLatch latch = new CountDownLatch(threadCount);

        for (int i = 0; i < threadCount; i++) {

            new Thread(new Runnable() {

                @Override
                public void run() {

                    System.out.println("线程" + Thread.currentThread().getId() + "开始出发");

                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                    System.out.println("线程" + Thread.currentThread().getId() + "已到达终点");

                    latch.countDown();
                }
            }).start();
        }

        try {
            latch.await();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("10个线程已经执行完毕!开始计算排名");
    }

}

结果:

线程11开始出发
线程13开始出发
线程12开始出发
线程10开始出发
线程14开始出发
线程15开始出发
线程16开始出发
线程17开始出发
线程18开始出发
线程19开始出发
线程16已到达终点
线程10已到达终点
线程14已到达终点
线程15已到达终点
线程12已到达终点
线程17已到达终点
线程13已到达终点
线程11已到达终点
线程18已到达终点
线程19已到达终点
10个线程已经执行完毕!开始计算排名

参考:CountDownLatch使用场景及分析

猜你喜欢

转载自www.cnblogs.com/hglibin/p/9903916.html