当前位置:首页 > 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) // 工作队列
);

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

提交任务到线程池

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

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

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

关闭线程池

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

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

线程池配置建议

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

拒绝策略实现

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

java如何实现线程池

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

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

分享给朋友:

相关文章

vue如何实现默认页面

vue如何实现默认页面

Vue 实现默认页面的方法 在 Vue 项目中,通常需要设置一个默认页面(如首页或登录页)作为用户访问时的初始页面。可以通过路由配置实现。 配置路由默认跳转 在 Vue Router 中,使用 re…

vue如何实现滤镜

vue如何实现滤镜

Vue 实现滤镜的方法 在 Vue 中实现滤镜效果可以通过多种方式,以下是常见的几种方法: 使用 CSS filter 属性 通过 CSS 的 filter 属性可以直接为元素添加滤镜效果。在 Vu…

vue如何实现登录

vue如何实现登录

Vue 实现登录功能的方法 创建登录表单组件 在 Vue 项目中创建一个登录表单组件,通常命名为 Login.vue。表单包含用户名和密码输入框,以及提交按钮。 <template>…

php 线程实现

php 线程实现

PHP 线程实现方法 PHP 本身是单线程语言,但可以通过扩展或库实现多线程功能。以下是几种常见的实现方式: 使用 pthreads 扩展 pthreads 是一个 PHP 扩展,允许在 PHP 中…

前段vue如何实现

前段vue如何实现

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

vue如何实现404

vue如何实现404

实现 Vue 404 页面的方法 在 Vue 中实现 404 页面通常需要结合路由配置和动态路由匹配。以下是几种常见方法: 使用通配符路由匹配 在 Vue Router 配置中,可以通过 * 通配符…