多线程中CountDownLatch的用法
多线程中CountDownLatch的用法
酷游博客

多线程中CountDownLatch的用法

酷游
1月22日发布 /正在检测是否收录...

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

用给定的计数初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置。如果需要重置计数,请考虑使用 CyclicBarrier。

public class Main {
    protected static ExecutorService scheduler = Executors.newFixedThreadPool(5);
    public static CountDownLatch countDownLatch;//定义一个静态的CountDownLatch
    public static void main(String[] args) {
        countDownLatch = new CountDownLatch(5); //初始化容量,
        int threadNum = taskNum>8?8:taskNum;  //创建八个线程,和cpu数目相等
        for(int i=0;i


public class MultiThread implements Runnable {
    public void run() {
        logger.info(" starting...");
        try {
            //do what you wanna do 
        } catch (Exception e) {
            logger.error("", e);
        }finally{
            logger.info("countDown"); 
            AppDependenciesMain.countDownLatch.countDown();//线程运行结束后,把countDownLatch数目减1
        }
    }
}

以上内容可保证在所有子进程都执行结束之后,主进程正常退出。

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 赞赏
评论
当前页面的评论已关闭
易航博客
SSL