那就来认识一下 ThreadPoolExecutor
这篇文章是手动创建线程池的七大参数,虽然Java提供了构建线程池的方法,不推荐使用,因为许多他们的构建参数可能是不了解的,比如设置线程的名字啊,阻塞队列用那些,拒绝策略用那些,这些是否都符合你当前业务? 所以还是手动创建线程池比较好,对它的把控就很好。
那就直接去代码把他的参数贴过来
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler) {
首先你去手动创建线程池 肯定是new ThreadPoolExecutor();这篇文章是主要就是讲解它的七个参数
- corePoolSize 核心线程数
很好理解,线程池的核心线程数量,不会被收回,没有任务也会是空闲状态 - maximumPoolSize 最大线程数
允许的最大线程数,当你的核心线程都在工作,来新的任务,去阻塞队列排队,没满去排队,满了就会看如果最大线程也满了,就去走拒绝策略,没满去创建临时线程 - keepAliveTime 最大线程空闲时间
创建的临时线程的空闲时间 - unit 时间单位
keepAliveTime的单位 - workQueue 阻塞队列
大白话来讲,当你的核心线程数满了,都在干活,全扔到这里排队 - threadFactory 线程工厂
找个重要的就是给线程有个名称,出现问题的时候能快速锁定问题 - handler 拒绝策略
这里呢,就是你的阻塞队列满了,最大线程数(maximumPoolSize)也满了,走拒绝策略