线程池底层原理和拒绝策略

2019-10-17  本文已影响0人  长孙俊明

线程池底层原理

用一个银行网点说明底层原理
线程池相当于一个银行网点,假设网点有五个柜台(maximumPoolSize),而银行有固定的业务柜台是2个(相当于corePoolSize),当办理业务柜台满了,客人到候客区(workQueue)等待,侯客区超过三个人之后,启动另外三个柜台进行办理业务,此时五个柜台已经全部都在工作,如果候客区还是满了,银行网点就会采用拒绝进入银行办理业务(保安会说,现在银行里面已经满了,请到别处办理)。如果新开的三个柜台超时一定时间(keepAliveTime)没有人办理业务,则关闭柜台。

拒绝策略

有四种拒绝策略
AbortPolicy 直接抛出异常阻住系统正常运行
CallerRunsPolicy 将任务返回给调用者
DiscardOldestPolicy 将队列中等待最久的任务删除掉,加入新的任务
DiscardPolicy 直接抛弃任务,不给于任何处理不抛异常,也就是说,任务会丢失掉。

上一篇下一篇

猜你喜欢

热点阅读