当前位置: 首页 > article >正文

java线程池编程示例

程序功能

这段代码展示了如何使用 Java 线程池 来并发执行多个任务。通过创建一个固定大小为 3 的线程池,程序提交了 5 个任务,并让线程池中的线程并发处理这些任务。每个任务模拟了一个耗时操作,最后程序等待所有任务完成后关闭线程池。
在这里插入图片描述

代码

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class ThreadPoolExample {
    public static void main(String[] args) {
        // 创建一个固定大小的线程池,线程池大小为 3
        ExecutorService executorService = Executors.newFixedThreadPool(3);

        // 提交5个任务到线程池中
        for (int i = 1; i <= 5; i++) {
            int taskId = i; // 任务ID
            executorService.submit(() -> {
                System.out.println("任务 " + taskId + " 开始执行,线程:" + Thread.currentThread().getName());
                try {
                    // 模拟任务执行时间
                    TimeUnit.SECONDS.sleep(2);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("任务 " + taskId + " 执行完成,线程:" + Thread.currentThread().getName());
            });
        }

        // 关闭线程池,不再接受新任务
        executorService.shutdown();
        try {
            // 等待所有任务执行完毕
            if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
                executorService.shutdownNow(); // 超时后强制关闭
            }
        } catch (InterruptedException e) {
            executorService.shutdownNow();
        }

        System.out.println("所有任务已完成");
    }
}


http://www.kler.cn/news/308784.html

相关文章:

  • python-桌面软件自动化(一)(实战微信发消息)
  • glb数据格式
  • macOS平台TextRank环境配置
  • rk3568 Android12 增加 USB HOST 模式开关(二)
  • JVM面试真题总结(十二)
  • Nginx 跨域 + 无法设置 Cookie 解决办法
  • 计算机网络17——IM聊天系统——客户端核心处理类框架搭建
  • 基于web的 BBS论坛管理系统设计与实现
  • 【AI学习笔记】初学机器学习西瓜书概要记录(一)机器学习基础知识篇
  • 苍穹外卖Day01-2
  • 机器人的静力分析与动力学
  • vue中解决上个路由的el-dialog遮罩层未关闭问题
  • mqtt整体了解
  • python实现多个pdf文件合并
  • 二十三种设计模式之适配器模式
  • 单调队列,LeetCode 2398. 预算内的最多机器人数目
  • ai 回答HFS是什么 HTTP的文件服务器是什么
  • 数据结构之排序算法的分析和应用
  • 【数据结构篇】~链表算法题3(环形链表)
  • C# net跨平台上位机开发(avalonia)附demo源码
  • 牛客背包问题练习 xinjun与阴阳师
  • 苍穹外卖学习笔记(八)
  • 【案例71】配置https之后 IE打不开登陆页面 Uclient没有问题
  • 《微信小程序实战(2) · 组件封装》
  • 【重学 MySQL】二十七、七种 join 连接
  • 宝塔Linux部署 Vue + Spring Boot + MySQL + Redis
  • Parallels Desktop 20 for Mac 正式发布,更新了哪些新功能(附下载链接)!
  • 深度学习驱动超材料设计领域发展
  • 用Inno Setup打包QT程序输出安装包
  • 消息队列的幂等问题解决方案