JDK 中线程池ThreadPoolExecutor的使用

JDK 中线程池ThreadPoolExecutor的使用

JDK 中线程池的使用

JDK 中提供的最核心的线程池工具类 ThreadPoolExecutor,在 JDK 1.8 中这个类最复杂的构造方法有 7 个参数。

在这里插入图片描述corePoolSize:线程池保有的最小线程数。

maximumPoolSize:线程池创建的最大线程数。

keepAliveTime:上面提到项目根据忙闲来增减人员,那在编程世界里,如何定义忙和闲呢?很简单,一个线程如果在一段时间内,都没有执行任务,说明很闲,keepAliveTime 和 unit 就是用来定义这个“一段时间”的参数。也就是说,如果一个线程空闲了keepAliveTime & unit这么久,而且线程池的线程数大于 corePoolSize ,那么这个空闲的线程就要被回收了。
unit:keepAliveTime 的时间单位
workQueue:任务队列
threadFactory:线程工厂对象,可以自定义如何创建线程,如给线程指定name。
handler:自定义任务的拒绝策略。线程池中所有线程都在忙碌,且任务队列已满,线程池就会拒绝接收再提交的任务。handler 就是拒绝策略,包括 4 种(即RejectedExecutionHandler 接口的 4个实现类)。
AbortPolicy:默认的拒绝策略,throws RejectedExecutionException
CallerRunsPolicy:提交任务的线程自己去执行该任务
DiscardPolicy:直接丢弃任务,不抛出任何异常
DiscardOldestPolicy:丢弃最老的任务,加入新的任务

猜你喜欢

转载自blog.csdn.net/qq_41134324/article/details/109015812
今日推荐