Java 杂谈Java

线程池概述

2019-04-27  本文已影响0人  无敌锤子棒棒鸡
为什么要使用线程池?
1.降低资源消耗
2.提高响应速度
3.提高线程的可管理性(线程监控)
线程池核心参数
corePoolSize    -- 核心线程数
maximumPoolSize -- 线程不够用时能够创建的最大线程数
workQueue       -- 任务等待队列
keepAliveTime   -- 当线程数量大于核心线程数时,此时又是空闲的,则过此设置时间,线程销毁
threadFactory   -- 用于创建新线程
handler         -- 线程饱和策略
线程池的几种拒绝策略
AbortPolicy         -- 直接抛出异常(默认策略)
CallerRunsPolicy    -- 用调用者所在的线程来执行任务
DiscardOldestPolicy -- 丢弃队列中最靠前的任务,并执行当前任务
DiscardPolicy       -- 直接丢弃任务
execute()和submit()的区别
void execute(Runnable command);
<T> Future<T> submit(Runnable task, T result);

从上面就能很直观的看出,execute适用于没有返回值的任务,而submit适用于有返回值的任务
线程池工作的具体流程
        --shutdown-->SHUTDOWN --阻塞队列为空,线程池工作数量为0 -- 
RUNNING -                                                       --> TIDYING --terminated() --> TERMINATED
        --shutdownnow-->STOP --线程池中工作线程数量为0 ----------
上一篇下一篇

猜你喜欢

热点阅读