java 多线程 , 等待所有子线程都执行完后 , 在执行主线程(其中的一种 , 也是个人觉得最好用的一种)
时间:2019-10-08
本文章向大家介绍java 多线程 , 等待所有子线程都执行完后 , 在执行主线程(其中的一种 , 也是个人觉得最好用的一种),主要包括java 多线程 , 等待所有子线程都执行完后 , 在执行主线程(其中的一种 , 也是个人觉得最好用的一种)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
public static void main(String[] args) throws InterruptedException { // Runtime.getRuntime().availableProcessors() 获取可用的cpu数量 int count = Runtime.getRuntime().availableProcessors(); //创建一个指定线程数量的线程池 ExecutorService executorService = Executors.newFixedThreadPool(count); /** * CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。 * 每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时, * 它表示所有的线程已经完成了任务 */ CountDownLatch downLatch = new CountDownLatch(count); for (int i = 0; i <count ; i++) { executorService.execute(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()); downLatch.countDown();//计数器减 1 } }); } /** * 如果计数器不为0的话 , 主线程会进入阻塞状态 * timeout : 5 表示最大超时时间 * TimeUnit.SECONDS 表示以秒为单位计算的 * 返回值 , 如果downLatch 计数器不为0的话,就是false ,反之true * 它还有一个无参的 downLatch.await(),如果计数器不为0 , 会一直阻塞 , 没有超时时间 */ boolean await = downLatch.await(5, TimeUnit.SECONDS); System.out.println(await); //downLatch.getCount() 获取剩余的数量 System.out.println(downLatch.getCount()); System.out.println("主线程执行:=>"+Thread.currentThread().getName()); }
原文地址:https://www.cnblogs.com/dmxk/p/11634466.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释