我是靠谱客的博主 腼腆大地,最近开发中收集的这篇文章主要介绍java ThreadPoolExecutor 对象创建参数理解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近在学习 ThreadPoolExecutor ,发现网上的解释对于几个参数解释比较难懂,想到了一个比较形象的例子,会让各位记忆尤深。

 

 

 

 

结合上面两张图来理解我的举例。

 

拿去网红饭馆吃饭举例,一道菜特别有名,引来不少顾客

 

int corePoolSize

池中要保留的线程数,即使它们处于空闲状态,除非设置了 allowCoreThreadTimeOut

 

corePoolSize 对应饭馆的桌子,桌子是有限的。

 

int maximumPoolSize

池中允许的最大线程数

 

maximumPoolSize 对应整个饭馆,包括桌子外的其他空地,排队到门口了就"s"型排队,充分利用饭馆的空地。

和图中一样,maximumPoolSize 是整个线程池,范围包括 corePoolSize。

 

long keepAliveTime

当线程数大于 corePoolSize 时,多余空闲线程在终止前等待新任务的最长时间,

多余空闲线程即 maximumPoolSize - corePoolSize 的差,指空余线程存活的时间,和 unit 一起使用。

 

keepAliveTime 对应排队的人能接受的排队时长。

 

TimeUnit unit

keepAliveTime 参数的时间单位

 

BlockingQueue<Runnable> workQueue

在任务执行前用于保留任务的队列。

此队列将只保存由 execute() 提交的 Runnable 任务。

 

workQueue 对应在饭馆排队买饭到门口的人,从门口另外折回来排队的算 maximumPoolSize 的。

 

ThreadFactory threadFactory

执行器创建新线程时要使用的工厂

 

threadFactory 对应在门口拉客的人。

 

RejectedExecutionHandler handler

当执行因达到线程界限和队列容量而被阻止时要使用的处理程序

 

handler 对应打算吃饭的人从门口看排队形成的"s"型都已经好几个了,嫌排队时间过长想走的情况处理。

 

任务提交环节满的情况下的递进关系

corePoolSize workQueue maximumPoolSize

 

最后

以上就是腼腆大地为你收集整理的java ThreadPoolExecutor 对象创建参数理解的全部内容,希望文章能够帮你解决java ThreadPoolExecutor 对象创建参数理解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部