没有合适的资源?快使用搜索试试~ 我知道了~
首页在spring boot中使用java线程池ExecutorService的讲解
在spring boot中使用java线程池ExecutorService的讲解
1.5k 浏览量
更新于2023-05-26
评论
收藏 81KB PDF 举报
今天小编就为大家分享一篇关于在spring boot中使用java线程池ExecutorService的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
资源详情
资源评论
资源推荐

在在spring boot中使用中使用java线程池线程池ExecutorService的讲解的讲解
今天小编就为大家分享一篇关于在spring boot中使用java线程池ExecutorService的讲解,小编觉得内容挺不错
的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
1. 认识认识java线程池线程池
1.1 在什么情况下使用线程池?在什么情况下使用线程池?
1.单个任务处理的时间比较短
2.需处理的任务的数量大
1.2 使用线程池的好处使用线程池的好处:
1.减少在创建和销毁线程上所花的时间以及系统资源的开销
2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存
1.3 线程池包括以下四个基本组成部分:线程池包括以下四个基本组成部分:
1、线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务;
2、工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务;
3、任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执
行完后的收尾工作,任务的执行状态等;
4、任务队列(taskQueue):用于存放没有处理的任务。提供一种缓冲机制。
1.4 线程池的核心参数线程池的核心参数
ThreadPoolExecutor 有四个构造方法,前三个都是调用最后一个(最后一个参数最全)
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue) {
this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
Executors.defaultThreadFactory(), defaultHandler);
}
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory) {
this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
threadFactory, defaultHandler);
}
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
RejectedExecutionHandler handler) {
this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
Executors.defaultThreadFactory(), handler);
}
// 都调用它
public ThreadPoolExecutor(// 核心线程数
int corePoolSize,
// 最大线程数
int maximumPoolSize,
// 闲置线程存活时间
long keepAliveTime,
// 时间单位
TimeUnit unit,
// 线程队列
BlockingQueue<Runnable> workQueue,
// 线程工厂
ThreadFactory threadFactory,
// 队列已满,而且当前线程数已经超过最大线程数时的异常处理策略
RejectedExecutionHandler handler ) {
if (corePoolSize < 0 ||
maximumPoolSize <= 0 ||
maximumPoolSize < corePoolSize ||
keepAliveTime < 0)
throw new IllegalArgumentException();
if (workQueue == null || threadFactory == null || handler == null)









安全验证
文档复制为VIP权益,开通VIP直接复制

评论0