线程池

1,线程池优点:

①降低资源消耗,复用已创建的线程,减少线程的创建与销毁。

②提高响应速度,当任务到达时,直接用已创建的线程。

③提高线程的可管理性,控制并发量。

 

2,ThreadPoolExecutor类源码:

  • 参数:5个必须参数:

corePoolSize:核心线程池数量

maximumPoolSize:线程池最大数量,

keepAliveTime:非核心线程存活时间

unit:keepAliveTime的单位,

workQueue:阻塞队列,BlockingQueue

2个非必须参数:

threadFactory:线程工厂,用于创建默认线程

handler:拒绝策略。

  • 拒绝策略:

AbortPolicy                     默认拒绝策略,丢弃任务并抛出异常

DiscardPolicy                 直接丢弃任务,不抛出异常(什么都不做)

DiscardOldestPolicy       丢弃阻塞队列(头部),最先入队的任务,然后重新提交任务

CallerRunsPolicy            由调用线程处理该任务,不进线程池。

  • 处理流程:

①核心线程池满?

②等待队列满?

③非核心线程池满?

④拒绝策略

 参考:

https://javadoop.com/post/java-thread-pool

线程池原理

 

 

 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/wangpan8721/p/13800600.html