`
eleven027
  • 浏览: 22676 次
  • 性别: 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主线程等待子线程执行完毕

    Java 主线程等待子线程执行完毕 Java 中的多线程编程是非常重要的一部分,特别是在需要并发执行多个任务的情况下。然而,在某些情况下,我们需要等待所有子线程执行完毕后再继续执行主线程的剩余动作。这时,我们...

    Java简单实现“主线程等待所有子线程完成再继续”

    有时我们可能需要设计程序,使得主线程在执行过程中能够等待所有子线程完成后再继续执行。这种需求常见于需要同步多个并行任务或者在主任务结束前确保所有子任务已经处理完毕的场景。本文将详细解释如何使用Java实现...

    Java多线程--让主线程等待所有子线程执行完毕

    ### Java多线程--让主线程等待所有子线程执行完毕 #### 核心知识点解析 在Java多线程环境中,让主线程等待所有子线程执行完毕是一个常见的需求,尤其是在处理大量数据或进行高性能计算时。这不仅有助于正确测量...

    Java多线程--等待所有子线程执行完的五种方法.docx

    例如,如果有多个子线程,我们可以在每个子线程执行`join()`,这样主线程会依次等待每个子线程完成。例如: ```java Thread thread1 = new Thread(...); Thread thread2 = new Thread(...); thread1.start(); ...

    Java多线程–让主线程等待所有子线程执行完毕

    线程启动后,它们会并发运行,而主线程也会继续执行,导致主线程在for循环结束后立即计算总耗时,此时所有子线程可能并未全部完成。 要解决“让主线程等待所有子线程执行完毕”的问题,可以采用以下策略: 1. 使用...

    多线程并行执行,汇总结果

    这时,可以设置一个`CountDownLatch`,初始化计数值为线程的数量,每个线程执行完后调用`countDown()`,最后主线程通过调用`await()`方法等待计数值变为0,即所有线程执行完毕,然后进行结果的汇总。 **汇总结果** ...

    多线程countDownLatch方法介绍

    2. 线程执行:主线程或其他线程启动子线程,子线程执行完任务后调用`countDown()`方法。 ```java new Thread(() -&gt; { // 执行子任务 latch.countDown(); // 完成任务后,计数器减1 }).start(); ``` 3. 主线程等待...

    利用 CountDownLatch 类实现线程同步

    `CountDownLatch` 是一个计数器,可以用于协调多个线程间的活动,等待所有线程完成各自的任务后,主线程或其他线程才能继续执行。 首先,让我们深入理解 `CountDownLatch` 的工作原理。`CountDownLatch` 在构造时会...

    多线程执行完后主程序再执行(包括需要子线程返回结果)

    例如,`CountDownLatch`可以用于让主线程等待特定数量的线程完成,而`CyclicBarrier`则允许一组线程等待彼此到达一个屏障点后再继续执行。 在实际开发中,合理地管理和控制线程是非常重要的,因为线程安全问题可能...

    【IT十八掌徐培成】Java基础第08天-02.多线程-join-daemon-同步.zip

    在Java中,主线程(用户线程)是程序执行的入口,而`daemon`线程则是一种后台服务线程,它不阻止JVM的退出。当所有非`daemon`线程结束时,即使还有`daemon`线程在运行,JVM也会终止。通常,`daemon`线程用于执行如...

    java线程 线程学习资料 java线程教程

    - **主线程**: Java程序启动时,JVM创建的初始线程。 - **后台线程**: JVM内部维护的线程,如垃圾回收线程。 - **用户自定义线程**: 用户可以根据需要创建并管理的线程。 #### 四、线程的生命周期 - **新建状态*...

    java.并发工具类CountDownLatch.md

    在Java并发编程中,`CountDownLatch`是一个非常实用的同步辅助类,它能够让一个或多个线程等待,直到其他线程执行完毕后再继续执行。该类位于`java.util.concurrent`包中,适用于多线程协作的场景,特别适合在需要...

    countdownlatch-example-sourcecode.zip

    - 多线程协同:在所有线程完成特定任务前,主线程需要等待。 - 测试框架:在测试中,启动多个测试线程,确保所有测试执行完毕后再进行结果汇总。 - 数据库连接池:初始化时,等待所有数据库连接准备好后再提供...

    Java多线程编程总结

    - 每个Java应用从main()方法开始运行,该方法运行在主线程中。 - 创建新线程时,会产生一个新的调用栈。 - 线程可分为用户线程和守护线程两种类型。用户线程执行完毕后,JVM会自动关闭;守护线程则不独立于JVM,...

    旺旺Java学习解决方案_第一季_线程(总结).pdf

    ##### 主线程、守护线程、线程组 - **主线程**:通常是指程序启动时的第一个线程,是其他所有线程的基础。 - **守护线程**:守护线程是在后台为其他线程提供服务的线程,例如垃圾回收线程。当程序中所有的非守护线程...

    java.并发工具类CountDownLatch(处理方案示例).md

    在并发编程中,CountDownLatch常常被用于实现一种典型场景:主线程需要等待一个或多个子线程完成操作后才能继续执行。以工厂工人上班前的准备场景为例,每个工人都对应一个子线程,主线程代表工厂主人。每个工人需要...

    java线程入门级书籍

    对于耗时的计算或I/O操作,可以将其放在后台线程中执行,这样主线程(通常是UI线程)可以继续响应用户的交互,提供更好的用户体验。 #### 三、Java线程的创建方式 **3.1 继承Thread类** 这是创建线程最常见的方式...

    让线程按顺序执行8种方法.doc

    通过使用主线程的join()方法,可以让主线程等待其他线程的执行完成后继续执行。 三、使用线程的wait方法 wait()是Object的方法,作用是让当前线程等待其他线程的唤醒。应用场景:当一个线程需要等待其他线程的结果...

    Java应用开发多线程

    在Java中,每个应用程序至少有一个主线程,用于执行程序的主要逻辑。通过创建额外的线程,可以实现并发执行,提高程序响应速度。 2. **线程的创建**: - **继承Thread类**:创建一个新的类,该类继承自`Thread`类...

Global site tag (gtag.js) - Google Analytics