这篇文章,给大家介绍一个CountDownLatch CyclicBarrier. Semaphore的这三个锁的基本使用情况;
CountDownLatch:
我们可以把CountDownLatch理解为一个计数器,给计数器一个初始值,当计数器的值减少的到0的时候,被wait的线程才开始执行;
**CountDownLatch适用的场景是:**适合大任务的拆分,使其并行执行,总的时间取决于最慢任务,总体来说,任务的执行时间大大的减少了;
CountDownLatch作用:就是等待其他线程执行完任务,并且必要时可以对各个任务的结果进行汇总,然后主线程继续往下执行;
下面是CountDownLatch简单实用:
public void testCountDownLaunch() throws InterruptedException{
CountDownLatch countLatch = new CountDownLatch(10);
for(int i = 0;i < 10;i++){
new Thread(()-> {
try {
TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) {
}
System.out.println("over + " + Thread.currentThread().getName());
countLatch.countDown();
},"A" + i).start();
}
count