线程状态
    image.png
    新建:仅仅是个java对象,没有跟真正的线程关联,不会被操作系统分配给CPU;
    可运行:执行start()方法后,跟真正的线程关联,被操作系统交给CPU;
    死亡:代码执行完毕;
    阻塞:未获得锁的线程;
    等待:获得锁但是执行了wait()方法
    计时等待:获得锁但是执行了wait(long)方法或者是执行了与锁无关的sleep()方法

    线程池ThreadPoolExecutor的7个核心参数:
    image.png
    corePoolSize————-核心线程数
    maximumPoolSize—-最大线程数
    keepAliveTime———-生存时间(针对临时线程)
    unit—————————-时间单位(针对临时线程)
    workQueue—————任务队列
    threadFactory————线程工厂(为线程起名字)
    handler———————拒绝策略(AbortPolicy,抛异常;
    DiscardPolicy,直接丢弃;
    DiscardOldestPolicy,去掉任务队列中等待最久的,将新任务加入任务队列中;
    CallerRunsPolicy,调用者线程运行。)

    使用顺序:
    懒加载核心线程——任务队列——临时线程——拒绝策略