2021-11-29 20:07发布
高并发、任务执行时间短的业务怎样使用线程池?并发不高、任务执行时间长的业务怎样使用线程池?并发高、业务执行时间长的业务怎样使用线程池?
顾名思义,管理线程的池子,相比于手工创建、运行线程,使用线程池,有如下优点
降低线程创建和销毁线程造成的开销
提高响应速度。任务到达时,相对于手工创建一个线程,直接从线程池中拿线程,速度肯定快很多
提高线程可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统稳定性,使用线程池可以进行同意分配、调优和监控
无论是创建何种类型线程池(FixedThreadPool、CachedThreadPool...),均会调用ThreadPoolExecutor构造函数,下面详细解读各个参数的作用
FixedThreadPool
CachedThreadPool
ThreadPoolExecutor
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue) { this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, Executors.defaultThreadFactory(), defaultHandler); }
corePoolSize:核心线程最大数量,通俗点来讲就是,线程池中常驻线程的最大数量
maximumPoolSize:线程池中运行最大线程数(包括核心线程和非核心线程)
keepAliveTime:线程池中空闲线程(仅适用于非核心线程)所能存活的最长时间
unit:存活时间单位,与keepAliveTime搭配使用
workQueue:存放任务的阻塞队列
handler:线程池饱和策略
最多设置5个标签!
Java线程池概念
顾名思义,管理线程的池子,相比于手工创建、运行线程,使用线程池,有如下优点
降低线程创建和销毁线程造成的开销
提高响应速度。任务到达时,相对于手工创建一个线程,直接从线程池中拿线程,速度肯定快很多
提高线程可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统稳定性,使用线程池可以进行同意分配、调优和监控
Java线程池创建
无论是创建何种类型线程池(
FixedThreadPool
、CachedThreadPool
...),均会调用ThreadPoolExecutor
构造函数,下面详细解读各个参数的作用corePoolSize:核心线程最大数量,通俗点来讲就是,线程池中常驻线程的最大数量
maximumPoolSize:线程池中运行最大线程数(包括核心线程和非核心线程)
keepAliveTime:线程池中空闲线程(仅适用于非核心线程)所能存活的最长时间
unit:存活时间单位,与keepAliveTime搭配使用
workQueue:存放任务的阻塞队列
handler:线程池饱和策略
一周热门 更多>