并发工具类 CountDownLatch

 * CountDownLatch:并发工具类
 * 1.一般有两个线程类  一个线程await() 方法
 * 这个方法是一个阻塞方法 当 要求的数量 减少到0的时候进行往下执行
 * 2.countDown() 方法 执行一次 ,数量减1
 * 3.创建 CountDownLatch 参数里面指定它的数量(并发数量)
 */
public class CountDownLauch1 {
    //1.创建工具类对象:参数 指定的就是并发的数量
    public static CountDownLatch countDownLatch =new CountDownLatch(10);

    public static void main(String[] args) {

        //1.一个司机线程
        Thread d = new Driver(countDownLatch);
        d.start();

        for (int i = 0; i < 10; i++) {
            Thread t =new Touriser(countDownLatch);
            t.start();
/**
 * @Author zh
 * @Description 司机线程
 * @Date 2021/12/6
 */
public class Driver extends  Thread {
    private CountDownLatch countDownLatch;

    public Driver(CountDownLatch countDownLatch) {
        this.countDownLatch = countDownLatch;

    }

    @Override
    public void run() {
        try {
            countDownLatch.await();//阻塞方法
            System.out.println("准备好了,进行发车....");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }
}

 


public class Touriser extends Thread {
    private CountDownLatch countDownLatch;

    public Touriser(CountDownLatch countDownLatch) {
        this.countDownLatch = countDownLatch;
    }

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
        countDownLatch.countDown();
    }
}

 

        }

    }
}

 

posted on 2021-12-06 20:42  无心睡眠A8  阅读(7)  评论(0)    收藏  举报