package com.com.task;
import org.springframework.scheduling.concurrent.DefaultManagedAwareThreadFactory;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class Thread_Main {
public static void main(String[] args) {
/**
* 阿里巴巴 Java开发规范 Executors容易不可控 推荐使用原生创建
* 原生创建线程池 的七个参数
* 1.核心线程数 一般是CPU的核数
* 2.最大线程数
* 3.线程的空闲时间
* 4.线程空闲时间的时间单位
* 5.阻塞队列
* 6.线程创建工厂
* 7.拒接策略*/
//常用的阻塞队列 7个
//常用的拒绝策略 4个
/**
* 线程池生效顺序
* 1.核心线程数 任
* 务先被核心线程执行要是不够
* 2.阻塞队列 多余的任务存储到队列,排队 任务过多,队列存储不下
* 3.最大线程数 线程池会创建新的线程,来处理任务 队列存放不下的任务
* 4.拒绝策略生效 当线程到达最大数,并且队列已存满,拒接策略生效
* 5.线程的空闲时间达到指定值 回收当前的线程 如果没有设置allowCoreThreadTimeOut,就会保留核心线程数
* 如果设置,都会回收
* */
//线程池类ScheduledThreadPoolExecutor类