`
eleven027
  • 浏览: 21787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Java主线程等待子线程执行完毕-CountDownLatch

阅读更多

主线程:

 

//Main主线程
public class MainThread {
 
    public static void main(String[] args) throws InterruptedException {
        long startTime = System.currentTimeMillis();
        int threadNum = 5; //线程数
        //定义正在运行的线程数
        CountDownLatch runningThreadNum = new CountDownLatch(threadNum);
        System.out.println(Thread.currentThread().getName()+"-start");
        //创建多个子线程
        for (int i = 0; i < threadNum; i++) {
            new SubThread(runningThreadNum).start();
        }
        //等待子线程都执行完了再执行主线程剩下的动作
        runningThreadNum.await();
        System.out.println(Thread.currentThread().getName()+"-end");
        long endTime = System.currentTimeMillis();
        System.out.println("runningTime:"+(endTime-startTime));
    }

}

 

子线程:

//子线程
public class SubThread extends Thread{
 
    //子线程记数器,记载着运行的线程数
    private CountDownLatch runningThreadNum;
 
    public SubThread(CountDownLatch runningThreadNum){
        this.runningThreadNum = runningThreadNum;
    }
     
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+"-start");
        System.out.println(Thread.currentThread().getName()+"-do something");
        System.out.println(Thread.currentThread().getName()+"-end");
        runningThreadNum.countDown();//正在运行的线程数减一
    }
}

 

分享到:
评论

相关推荐

    java使用CountDownLatch等待多线程全部执行完成

    主要为大家详细介绍了使用CountDownLatch等待多线程全部执行完成,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    mybaits 多线程 实现数据批量插入 (运用CountDownLatch实现闭锁)

    mybaits 多线程 实现数据批量插入 (运用CountDownLatch实现闭锁) 1、mybatis批处理 2、数据分批量查询 3、数据分批量插入

    wardseptember#notes#CountDownLatch源码分析1

    简介countDownLatch这个类使一个主线程等待其他线程执行完毕后再执行。它是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,

    CountDownLanch.rar

    CountDownLatch使用实例 - 初始化时,设置计数(count)值,也就是闭锁需要等待的线程数。 - 主线程必须在启动其他...当所有 N 个线程都调用了这个方法时,计数将达到 0,主线程可以在 await() 方法之后继续执行。

    利用 CountDownLatch 类实现线程同步

    利用 CountDownLatch 类实现线程同步,而不用回调机制。详见我的博文 http://blog.csdn.net/kroclin/article/details/37956949

    Java线程并发工具类CountDownLatch原理及用法

    主要介绍了Java线程并发工具类CountDownLatch原理及用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Java中的CountDownLatch类最全讲义

    主线程等待多个线程完成 4.1 场景介绍 4.2 使用CountDownLatch实现等待 CountDownLatch的其他应用场景 5.1 倒计时计时器 5.2 同时开始任务 5.3 等待多个资源就绪 CountDownLatch与CyclicBarrier的对比 最佳实践与...

    源码详解CountDownLatch

    具体来说一个经典得应用案例是,主线程等待子线程执行完毕,再进行信息汇总,退出主函数。 如下代码所示。我们可以大胆猜测其初始化构造,赋值计数器值,之后,每次调用countDown函数,计数器减一,当为零时,会唤醒...

    java大批量导入excel,多线程加分片处理的dome

    然后,创建一个固定数量的线程池,使用 CountDownLatch 控制主线程等待所有任务完成;最后,循环迭代分片区间,将分片任务提交到线程池中处理。在每个任务中,使用 ReadRowHolder 对象实现分片读取 Excel 数据,并...

    多线程countDownLatch方法介绍

    NULL 博文链接:https://cpjsjxy.iteye.com/blog/2272451

    CyclicBarrier用法.docx

    它的作用类似于CountDownLatch,可以让一个或多个线程等待其他线程执行完毕后再继续执行。 CyclicBarrier可以被看作是一个屏障,当所有线程都到达这个屏障时,所有线程才能继续执行。与CountDownLatch不同的是,...

    详解Java多线程编程中CountDownLatch阻塞线程的方法

    在Java中和ReadWriteLock.ReadLock一样,CountDownLatch的本质也是一个"共享锁",这里我们就来详解Java多线程编程中CountDownLatch阻塞线程的方法:

    【2018最新最详细】并发多线程教程

    【2018最新最详细】并发多线程教程,课程结构如下 ...25.大白话说java并发工具类-CountDownLatch,CyclicBarrier 26.大白话说java并发工具类-Semaphore,Exchanger 27.一篇文章,让你彻底弄懂生产者--消费者问题

    Java多线程之并发工具类

     1)CountDownLatch(同步倒数计数器:等待多线程(或者多步骤)完成)  2)CyclicBarrier(循环屏障:同步屏障)  3)Semaphore(信号量:控制并发进程数)  主要参考资料:java并发编程的艺术、Java并发——...

    Java中CountDownLatch进行多线程同步详解及实例代码

    主要介绍了Java中CountDownLatch进行多线程同步详解及实例代码的相关资料,需要的朋友可以参考下

    Java并发包之CountDownLatch用法.docx

    CountDownLatch计数器闭锁是一个能阻塞主线程,让其他线程满足特定条件下主线程再继续执行的线程同步工具。 Latch闭锁的意思,是一种同步的工具类。类似于一扇门:在闭锁到达结束状态之前,这扇门一直是关闭着的,不...

    Java多线程编程之CountDownLatch同步工具使用实例

    主要介绍了Java多线程编程之CountDownLatch同步工具使用实例,需要的朋友可以参考下

    JAVA多线程CountDownLatch使用详解

    主要介绍了JAVA多线程CountDownLatch的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    如何使用CountDownLatch同步java多线程

    主要介绍了如何使用CountDownLatch同步java多线程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics