当前位置:首页 > Java

java如何实现线程池

2026-03-17 17:37:44Java

Java线程池的实现方法

Java通过java.util.concurrent包提供了线程池的实现框架,核心类是ThreadPoolExecutor。以下是实现线程池的典型方式:

使用Executors工厂类创建

ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();

newFixedThreadPool创建固定大小的线程池,newCachedThreadPool创建可扩容线程池,newSingleThreadExecutor创建单线程池。

自定义ThreadPoolExecutor

ThreadPoolExecutor executor = new ThreadPoolExecutor(
    5, // 核心线程数
    10, // 最大线程数
    60L, // 空闲线程存活时间
    TimeUnit.SECONDS, // 时间单位
    new ArrayBlockingQueue<>(100) // 工作队列
);

参数依次为:核心线程数、最大线程数、线程空闲时间、时间单位、任务队列。

java如何实现线程池

提交任务到线程池

executor.execute(() -> {
    // 执行任务代码
});

Future<String> future = executor.submit(() -> {
    return "task result";
});

execute()用于提交无返回值的任务,submit()用于提交有返回值的任务。

关闭线程池

executor.shutdown(); // 平缓关闭
executor.shutdownNow(); // 立即关闭
List<Runnable> unfinishedTasks = executor.shutdownNow();

shutdown()会等待已提交任务完成,shutdownNow()会尝试中断正在执行的任务。

java如何实现线程池

线程池配置建议

核心线程数通常设置为CPU核心数+1 最大线程数根据任务类型调整:CPU密集型任务建议核心数+1,IO密集型任务可设置更高 任务队列容量需要平衡内存消耗和系统负载 合理设置拒绝策略(默认抛出RejectedExecutionException)

拒绝策略实现

当队列满且线程数达到最大值时,可以自定义拒绝策略:

ThreadPoolExecutor executor = new ThreadPoolExecutor(
    5, 10, 60L, TimeUnit.SECONDS,
    new ArrayBlockingQueue<>(100),
    new ThreadPoolExecutor.CallerRunsPolicy()
);

内置策略包括:AbortPolicy(默认)、CallerRunsPolicy、DiscardPolicy、DiscardOldestPolicy。

分享给朋友:

相关文章

vue中如何实现循环

vue中如何实现循环

循环渲染列表数据 在Vue中,使用v-for指令实现循环渲染。基本语法为v-for="(item, index) in items",其中items是数据源数组,item是当前遍历的元素,index是…

vue手写签名如何实现

vue手写签名如何实现

实现 Vue 手写签名的步骤 使用 canvas 实现基础签名功能 在 Vue 项目中创建一个组件,利用 HTML5 的 canvas 元素实现手写签名功能。通过监听鼠标或触摸事件来捕获用户的绘制路径…

如何实现vue

如何实现vue

安装 Vue.js 使用 npm 或 yarn 安装 Vue.js。确保已安装 Node.js 环境。 npm install vue # 或 yarn add vue 创建 Vue 实例 在 HT…

java如何实现多线程

java如何实现多线程

实现多线程的方法 在Java中,实现多线程主要有两种方式:继承Thread类和实现Runnable接口。此外,还可以使用ExecutorService等高级工具类来管理线程。 继承Thread类 通…

前段vue如何实现

前段vue如何实现

Vue 前端实现方法 Vue 是一款流行的前端框架,用于构建用户界面。以下是一些常见的 Vue 实现方法: 组件化开发 Vue 的核心思想是组件化开发。每个组件可以独立封装逻辑、模板和样式,便于复用…

vue如何实现递归

vue如何实现递归

递归组件的实现方法 在Vue中实现递归组件通常用于渲染树形结构或嵌套数据。核心思路是组件在其模板中调用自身,但需注意终止条件以避免无限循环。 定义递归组件 组件需设置name选项,才能在模板中调用自…