线程池七大基本参数
(原创版)
1.线程池的概述
2.线程池的七大基本参数
1.1 corePoolSize:核心线程数
1.2 maximumPoolSize:最大线程数
1.3 keepAliveTime:线程存活时间
1.4 timeUnit:时间单位
1.5 workQueue:任务队列
1.6 threadFactory:线程工厂
java线程池创建的四种 1.7 rejectHandler:拒绝策略
3.线程池的创建与使用
4.线程池的优缺点
5.线程池的应用场景
正文
一、线程池的概述
线程池(ThreadPoolExecutor)是 Java 并发编程中常用的一种线程管理技术,它可以有效地重用线程,减少线程创建和销毁的开销,提高系统性能。线程池的核心概念是线程池中的线程分为核心线程和非核心线程,其中核心线程是线程池中一直存在的线程,而非核心线程则是根据任务需求动态创建的线程。
二、线程池的七大基本参数
1.1 corePoolSize:核心线程数
corePoolSize 是线程池中核心线程的数量,即线程池启动时创建的线程数。在任务数量较多时,核心线程可以有效地分担任务压力,提高系统性能。
1.2 maximumPoolSize:最大线程数
maximumPoolSize 是线程池中允许存在的最大线程数。当任务数量超过 corePoolSize 时,线程池会根据 maximumPoolSize 创建非核心线程来执行任务。
1.3 keepAliveTime:线程存活时间
keepAliveTime 是线程池中非核心线程的存活时间。当任务完成后,非核心线程不会立即销毁,而是等待一段时间,以便在有新任务时能够快速响应。
1.4 timeUnit:时间单位
timeUnit 是 keepAliveTime 的时间单位,如秒、毫秒等。
1.5 workQueue:任务队列
workQueue 是线程池中用于存储待执行任务的队列。当线程池中的线程数量达到最大值且任务仍需执行时,会将新任务放入 workQueue 中,等待有空闲线程时执行。
1.6 threadFactory:线程工厂
threadFactory 是线程池中用于创建新线程的工厂。通过自定义 threadFactory,可以对线程的创建进行控制,如设置线程名称、优先级等。
1.7 rejectHandler:拒绝策略
rejectHandler 是线程池中用于处理任务拒绝的策略。当线程池中的线程数量达到最大值且任务仍需执行时,可以根据 rejectHandler 的设置来决定如何处理新任务。常用的拒绝策略有:AbortPolicy(直接抛出异常)、CallerRunsPolicy(让调用者执行任务)、DiscardPolicy(直接丢弃任务)和 DiscardOldestPolicy(丢弃队列中最旧的任务)。
三、线程池的创建与使用
要创建线程池,需要通过 ThreadPoolExecutor 类的构造方法进行初始化。其中,corePool
Size、maximumPoolSize、keepAliveTime、timeUnit、workQueue、threadFactory 和 rejectHandler 是必填参数。线程池创建后,可以通过 submit() 方法将任务提交给线程池执行。
四、线程池的优缺点
线程池的优点有:
1.减少线程创建和销毁的开销,提高系统性能;
2.通过自定义 threadFactory,可以对线程的创建进行控制;
3.通过设置 rejectHandler,可以灵活处理任务拒绝。
线程池的缺点有:
1.线程池的容量是有限的,当任务数量超过线程池的最大容量时,部分任务可能会被拒绝;
2.线程池中的线程是固定的,无法根据系统负载进行动态调整。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论