在现代Java开发中,多线程编程是提升程序性能和响应能力的关键技术。而Java线程池则是管理线程最高效、最安全的方式之一。本文将带你从零开始,全面掌握 ThreadPoolExecutor 的使用方法,无论你是刚接触并发的新手,还是希望巩固知识的开发者,都能轻松上手。
ThreadPoolExecutor 是 Java 并发包(java.util.concurrent)中用于创建和管理线程池的核心类。它允许你通过复用一组工作线程来执行多个任务,避免频繁创建和销毁线程带来的性能开销。
要创建一个 ThreadPoolExecutor,你需要理解它的核心参数:
public ThreadPoolExecutor( int corePoolSize, // 核心线程数 int maximumPoolSize, // 最大线程数 long keepAliveTime, // 非核心线程空闲存活时间 TimeUnit unit, // 时间单位 BlockingQueue<Runnable> workQueue, // 任务队列 ThreadFactory threadFactory, // 线程工厂(可选) RejectedExecutionHandler handler // 拒绝策略(可选)) 下面是一个完整的示例,展示如何使用 ThreadPoolExecutor 执行多个任务:
import java.util.concurrent.*;public class ThreadPoolExample { public static void main(String[] args) { // 创建 ThreadPoolExecutor ThreadPoolExecutor executor = new ThreadPoolExecutor( 2, // corePoolSize 4, // maximumPoolSize 10, // keepAliveTime TimeUnit.SECONDS, new LinkedBlockingQueue<>(10), // 任务队列容量为10 Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy() // 默认拒绝策略 ); // 提交15个任务 for (int i = 0; i < 15; i++) { final int taskId = i; executor.submit(() -> { System.out.println("任务 " + taskId + " 正在由线程 " + Thread.currentThread().getName() + " 执行"); try { Thread.sleep(2000); // 模拟耗时操作 } catch (InterruptedException e) { Thread.currentThread().interrupt(); } }); } // 关闭线程池(不再接受新任务,但会执行完已提交的任务) executor.shutdown(); try { // 等待所有任务完成,最多等待60秒 if (!executor.awaitTermination(60, TimeUnit.SECONDS)) { executor.shutdownNow(); // 强制关闭 } } catch (InterruptedException e) { executor.shutdownNow(); Thread.currentThread().interrupt(); } }} 当线程池和队列都满了,新任务会被拒绝。Java提供了四种内置策略:
AbortPolicy(默认):抛出 RejectedExecutionExceptionCallerRunsPolicy:由调用线程直接执行该任务DiscardPolicy:静默丢弃任务DiscardOldestPolicy:丢弃队列中最老的任务,然后重试提交ThreadPoolExecutor,避免使用 Executors 工厂方法(如 newFixedThreadPool),因为它们可能使用无界队列,导致内存溢出。corePoolSize 和 maximumPoolSize,根据 CPU 核心数和任务类型(CPU密集型 or IO密集型)调整。shutdown() 或 shutdownNow() 来优雅关闭线程池,防止程序无法退出。通过本教程,你已经掌握了 ThreadPoolExecutor教程 的核心知识点,包括构造参数、任务提交、拒绝策略以及最佳实践。正确使用 线程池配置 能显著提升应用的并发能力和稳定性。
记住,Java线程池 不仅是面试高频考点,更是实际项目中不可或缺的工具。动手实践本文中的代码,你将对 多线程编程 有更深刻的理解!
本文由主机测评网于2025-12-11发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126199.html