Java多个子线程都执行完后,再执行主线程

最近找工作面试官问了我一个关于多线程的问题:Java多个子线程都执行完后,再执行主线程
当时没有答出来,回来百度了一下然后看了线程的源码,找到了答案。然后自己备注下,以后用。
java.lang.Thread中
这里写图片描述
测试代码及结果
这里写图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
好的,以下是一个简单的 Java 线程池应用示例,线程创建一个固定大小的线程池,提交多个任务给线程执行线程需要等待所有任务执行完成后输出一句话。 ```java import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class ThreadPoolExample { public static void main(String[] args) throws InterruptedException { int numTasks = 5; ExecutorService executor = Executors.newFixedThreadPool(2); // 创建一个固定大小为2的线程池 for (int i = 1; i <= numTasks; i++) { Runnable task = new Task(i); executor.submit(task); // 提交任务给线程执行 } executor.shutdown(); // 关闭线程池 executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); // 等待所有任务执行完成 System.out.println("所有任务执行完成!"); } static class Task implements Runnable { private final int taskId; Task(int taskId) { this.taskId = taskId; } @Override public void run() { System.out.println("任务 " + taskId + " 开始执行线程名为 " + Thread.currentThread().getName()); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("任务 " + taskId + " 执行完成,线程名为 " + Thread.currentThread().getName()); } } } ``` 在上面的示例中,`Task` 类实现了 `Runnable` 接口,表示一个要执行的任务,每个任务会在执行前输出一个信息和当前执行该任务的线程名,然后等待 2 秒钟,之后输出一个信息和当前执行该任务的线程名,表示任务已经执行完成。 `main` 方法中创建了一个固定大小为 2 的线程池,提交了 5 个任务给线程执行。然后调用了 `executor.shutdown()` 方法关闭线程池,并调用 `executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS)` 方法等待所有任务执行完成,之后输出一句话表示所有任务执行完成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev_Arno

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值