多线程之CountDownLatch

countDownLatch

countDownLatch是java1.5引入,和它一起被引入的工具类还有CyclicBarrier 、Semaphore 、concurrentHashMap和BlockingQueue。存在于java.util.current包下。

countDownLatch这个类使一个线程等待其它线程各自执行完毕后再执行。是通过一个计数器来实现的,计数器的初始值是现成的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,标识所有线程都执行完毕,然后在闭锁上等待的线程就可以恢复工作了。

该类中只有一个构造器:

 public countDownLatch(int count){  } ; //参数count为计数值

该类中的三个重要方法:

1. 调用await方法的线程会被挂起,它会等待直到count值为0才继续执行。

public void await() throws InterruptedException{};

2.和await类似,只不过等待一定的时间后count值还没变为0的话就会继续执行。

public boolean await (long timeout, TimeUnit unit) throws InterruptedException{  };

3.将count的值减一。

public void countDown(){};

CountDownLatch和CyclicBarrier区别:

1. countDownlatch是一个计数器,线程完成一个记录一个,计数器递减,只能使用一次。

2. CyclicBarrier的技术器更像一个阀门,需要所有线程都到达,然后继续执行,技术器递增,提供reset功能,可以多次使用。

关于多线程的使用,在后期的实战中会继续补充!!!

猜你喜欢

转载自blog.csdn.net/duan196_118/article/details/111473572