多线程同步执行,CountDownLatch使用 您所在的位置:网站首页 python多线程同步机制 多线程同步执行,CountDownLatch使用

多线程同步执行,CountDownLatch使用

#多线程同步执行,CountDownLatch使用| 来源: 网络整理| 查看: 265

多线程同步执行,CountDownLatch使用

一种同步辅助,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。

CountDownLatch用给定的计数进行初始化。由于对countDown方法的调用,await方法会阻塞直到当前计数达到0,之后所有等待的线程都会被释放,所有后续的await调用都会立即返回。这是一个一次性现象——计数不能重置。如果需要重置计数的版本,可以考虑使用CyclicBarrier。

CountDownLatch是一个通用的同步工具,可以用于多种目的。用一个计数初始化的CountDownLatch作为一个简单的开/关闩锁,或gate:所有调用await的线程在gate处等待,直到它被调用countDown的线程打开。可以使用初始化为N的CountDownLatch使一个线程等待,直到N个线程完成某个操作,或者某个操作已经完成N次。

CountDownLatch的一个有用属性是,它不要求调用countDown的线程在继续之前等待计数达到0,它只是阻止任何线程继续等待,直到所有线程都可以通过。

import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; class CountDownLatchTests { public static void main(String[] args) throws InterruptedException { //相当于计数器 CountDownLatch countDownLatch = new CountDownLatch(5); //计数器总数是5,当减少为0,任务才继续向下执行 for (int i = 0; i try { TimeUnit.SECONDS.sleep(finalI); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "-->start"); countDownLatch.countDown(); }).start(); } countDownLatch.await(); System.out.println("main线程继续向下执行"); } }

执行结果

Thread-0–>start Thread-1–>start Thread-2–>start Thread-3–>start Thread-4–>start main线程继续向下执行 Thread-5–>start Thread-6–>start Thread-7–>start Thread-8–>start Thread-9–>start



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有