推广 热搜: 广场  Java  Word  app  营业  微信公众号  北京代理记账  商城  代理记账  商标交易 

怎么让keep-alive缓存的组件更新 线程池队列大小设置?

   2023-05-05 企业服务招财猫60
核心提示:线程池队列大小设置?一、ThreadPoolExecutor的重要参数CorePoolSize:核心线程的数量。核心线程会一直存活,没有任务要及时执行。当线程数小于核心线程数时,即使有空闲线程,线程池

线程池队列大小设置?

一、ThreadPoolExecutor的重要参数

CorePoolSize:核心线程的数量。核心线程会一直存活,没有任务要及时执行。当线程数小于核心线程数时,即使有空闲线程,线程池也会优先创建新线程进行处理。当allowCoreThreadTimeouttrue(默认为false)被设置时,核心线程将随着时间的推移而关闭。

QueueCapacity:任务队列容量(阻塞队列)

当核心线程的数量达到最大值时,新任务将排队等待执行。

MaxPoolSize:最大线程数

当线程数为gtcorePoolSize且任务队列已满时。线程池创建新的线程来处理任务。

当线程数为maxPoolSize且任务队列已满时,线程池将拒绝处理任务并抛出异常。

KeepAliveTime:线程空闲时间

当线程的空闲时间达到keepAliveTime时,线程将退出,直到线程数达到corePoolSize。

如果allowCoreThreadTimeouttrue,它将一直等到线程数为0。

AllowCoreThreadTimeout:允许核心线程超时。

RejectedExecutionHandler:任务拒绝处理程序

拒绝处理任务有两种情况:

当线程数量达到maxPoolSize且队列已满时,新任务将被拒绝。

当线程池被调用shutdown()时,它将等待线程池中的任务被执行,然后关闭。如果在调用shutdown()和线程池实际关闭之间提交了一个任务,新任务将被拒绝。

线程池将调用rejectedExecutionHandler来处理这个任务。如果默认值为AbortPolicy,将引发异常。

ThreadPoolExecutor类有几个内部实现类来处理这种情况:

AbortPolicy丢弃任务并引发运行时异常。

CallerRunsPolicy执行任务

DiscardPolicy忽略它,什么也不会发生。

DiscardOldestPolicy将首先进入队列(最后执行)的任务从队列中踢出。

实现RejectedExecutionHandler接口,可以自定义处理器。

二、ThreadPoolExecutor的执行顺序

线程池执行如下任务

(1)当线程数小于核心线程数时,创建线程。

(2)当线程数大于等于核心线程数且任务队列未满时,将任务放入任务队列。

(3)当线程的数量大于或等于核心线程的数量,并且任何服务队列已满

1)如果线程数小于最大线程数,则创建线程。

2)如果线程数等于最大线程数,抛出异常,拒绝任务。

第三,如何设置参数

系统默认值

核心池大小1

_值

_值

keepAliveTime60s

allowCoreThreadTimeoutfalse

rejectedExecutionHandlerAbortPolicy()

如何设置它

需要根据几个值来决定。

任务:每秒的任务数,假设为500~1000。

Taskcost:每个任务都需要时间,假设0.1s

Responsetime:系统允许的最大响应时间,假设为1s。

做一些计算

corePoolSize每秒需要处理多少线程?

线程计数任务/(1/taskcost)任务*taskcout(500~1000)*0.150~100线程。CorePoolSize设置应大于50。

根据8020原理,如果每秒80%的任务小于800,那么corePoolSize可以设置为80。

queueCapacity(核心大小池/任务成本)*响应时间

计算可用队列容量80/0.1*180。意味着队列中的线程可以等待1s,超过1s就需要新的线程来执行。

记住它可以t设置为_VALUE,这样队列会非常大,线程数量只会保持在corePoolSize大小。当任务急剧增加时,没有新的线程可以打开执行,响应时间会急剧增加。

maxPoolSize(最大任务数)-队列容量)/(1/任务成本)

可以得到计算的maxPoolSize(1000-80)/1092。

(最大任务数-队列容量)/每个线程每秒处理能力的最大线程数

RejectedExecutionHandler:根据具体情况,任务不重要可以丢弃,而重要的任务要通过一些缓冲机制来处理。

默认情况下,通常满足KeepAliveTime和allowCoreThreadTimeout。

以上都是理想值,要根据机器的性能来决定。如果在未达到最大线程数的情况下,机器的cpu负载已满,则需要通过升级硬件、优化代码、降低taskcost来处理。

什么是激励电压?

激励电压,物理概念。为了观察电路系统的特性,输入到电路中的各种电信号是激励信号。激励信号的电压就是激励电压。

中文名

激励电压

外国名字

激励电压

另一个名字

激励电压

主题类别

物理学

快的

航行

例子

基本定义

受控电源的参数由激励源控制。

例子

例如,受控电压源U与U的关系为:U^2,即U高一倍,激励源为电压。例如,UI1/2表示U的电压值是支路I1电流值的一半,激励源是电流I1。例如,I3表示受控电流源I的电流值是激励源电压值的三倍。例如,I3I1意味着受控电流源I的电流是激励源I1的三倍。

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
合作伙伴
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  冀ICP备2023006999号-8