线程池七个参数的含义
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* @author: yongtong
* @Date: 2021/11/16 21:21:02
* @Description:
*/
public class ThreadText {
public static void main(String[] args) {
/**
* 线程池七个参数含义
*/
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
//核心线程数,线程至少有五个当线程处于空闲状态时默认情况下不会被回收
5,
//最大线程数
12,
//线程保持存活的时间,当时间超过时空闲线程会被销毁
5,
//时间单位
TimeUnit.SECONDS,
//任务队列,当核心线程都在执行任务时,有新任务加入时就会放入任务队列中,暂时缓存
new ArrayBlockingQueue<Runnable>(5),
//线程工厂用于创建线程
Executors.defaultThreadFactory(),
//拒绝策略(饱和策略)当核心线程与最大线程已经以及任务队列占满时,就会执行拒绝策略
new ThreadPoolExecutor.DiscardOldestPolicy()
);
threadPoolExecutor.execute(() -> {
System.out.println(Thread.currentThread().getName());
});}
}
拒绝策略的执行顺序
核心线程——》任务队列——》最大线程数——》拒绝策略