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

简介:

采用CountDownLatch类来实现

 

 

主线程 

 

package test;

import java.util.concurrent.CountDownLatch;

public class Main {

 /**
  *
  * @author Administrator/2012-3-1/上午09:36:55
  */
 public static void main(String[] args) {

  int threadNum = 10;
  CountDownLatch threadSignal = new CountDownLatch(threadNum);// 初始化countDown

  for (int i = 0; i < threadNum; i++) {// 开threadNum个线程

   Thread t = new ImportThread(i,threadSignal);
   t.start();
  }
  try {
   threadSignal.await();
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }// 等待所有子线程执行完
  System.out.println(Thread.currentThread().getName() + "结束.");// 打印结束标记

 }

}

 

 

子线程:

package test;

import java.util.concurrent.CountDownLatch;

public class ImportThread extends Thread {
 private CountDownLatch threadsSignal;
 
 private  int index;

 public ImportThread(int index,CountDownLatch threadsSignal) {
  this.threadsSignal = threadsSignal;
  this.index=index;
 }

 @Override
 public void run() {
  System.out.println(Thread.currentThread().getName() + "开始...");
  // Do somethings
  System.out.println(Thread.currentThread().getName()+"do execute ...");
  threadsSignal.countDown();// 线程结束时计数器减1
  System.out.println(Thread.currentThread().getName() + "结束. 还有" + threadsSignal.getCount() + " 个线程");
 }
}

 

 


 

目录
相关文章
|
24天前
|
缓存 监控 Java
线程池的魔法:Java 开发者必备的并发工具
线程池的魔法:Java 开发者必备的并发工具
31 0
|
3天前
|
缓存 安全 Java
Java并发编程中的线程安全性探讨
【2月更文挑战第6天】在Java开发中,多线程编程是一种常见的方式,然而如何确保线程安全性却是一个复杂且关键的问题。本文将深入探讨Java并发编程中的线程安全性,包括线程安全性的概念、常见的线程安全性问题以及解决方法,旨在帮助开发者更好地理解和应对多线程环境下的挑战。
|
3天前
|
缓存 安全 Java
Java并发编程中的线程安全性问题与解决方法
【2月更文挑战第6天】在Java并发编程中,线程安全性一直是一个重要的问题。本文将深入探讨Java中线程安全性问题的根源,以及针对这些问题提出的解决方法,包括使用同步关键字、Lock对象、volatile关键字等。通过本文的学习,读者将更好地理解Java并发编程中的线程安全性问题,并能够运用相应的解决方法来保障程序的稳定性和可靠性。
13 4
|
3天前
|
监控 Java 开发者
Java并发编程中的线程池优化策略
【2月更文挑战第6天】在Java并发编程中,合理地使用线程池是提高程序性能和效率的关键。本文将探讨线程池的优化策略,包括核心线程数设置、队列类型选择、拒绝策略等方面,帮助开发者更好地利用线程池来处理并发任务。
20 8
|
4天前
|
Java API
Java中的多线程编程技巧与最佳实践
【2月更文挑战第5天】 在当今软件开发领域,多线程编程已经成为一种必不可少的技能。本文将深入探讨Java中多线程编程的技巧与最佳实践,帮助读者更好地理解并应用多线程技术。
|
4天前
|
监控 Java 数据库
Java并发编程中的线程池优化
【2月更文挑战第5天】在Java并发编程中,线程池是一种重要的机制,它可以有效地管理线程的创建和销毁,提高系统的性能和资源利用率。本文将介绍线程池的基本概念,分析线程池的使用场景和常见问题,并探讨如何优化线程池的配置和调整,以实现更高效的并发编程。
|
4天前
|
安全 Java
探究Java中的多线程编程
【2月更文挑战第5天】Java是一门广泛应用于企业级开发的编程语言,其支持多线程并发编程,这使得Java在应对高并发场景时具有重要优势。本文将重点介绍Java中的多线程编程,包括多线程的概念、线程的生命周期、线程同步和互斥、线程池等内容。
|
6天前
|
安全 Java 调度
Java中的多线程编程与性能优化
【2月更文挑战第4天】本文将介绍Java中的多线程编程及其在性能优化方面的应用。通过深入讨论多线程编程的基础知识、线程同步与互斥、线程通信、线程池以及性能调优等方面的内容,读者将能够全面了解如何利用多线程技术提升Java应用程序的性能和并发处理能力。
18 2
|
7天前
|
存储 缓存 安全
Java ConcurrentHashMap:线程安全的哈希表实现
Java ConcurrentHashMap:线程安全的哈希表实现
|
7天前
|
并行计算 Java API
深入理解Java多线程编程:创建、状态管理、同步与通信
深入理解Java多线程编程:创建、状态管理、同步与通信

相关产品

  • 云迁移中心