ThreadPoolExecutor二次学习

参考链接:https://blog.csdn.net/qq_39104442/article/details/90378858

多线程以及并发变成已经成为了必问的问题,今天就来总结下多线程在项目中的应用以及线程池的使用。
多线程的使用: 比如在庞大的项目中,一个请求中,可能要调用N多个服务, 比如调用积分服务,订单服务,地址服务,库存服务或者一些其他公司的服务等,
多次调用过程中如果每个服务都用掉500ms,那么整体的时长就是n*500,。so,这个时间是无法忍受的, 所以就要使用多线程来干这个事情了。 
为了提高线程的使用率,避免造成性能的浪费, 所以这里就要用到线程池了,这里来说说线程池:
众所周知,线程池就是来管理线程的容器。
一般的面试这就会说:newCachedThreadPool,newFixedThreadPool,newSingleThreadExecutor
  newScheduleThreadPool四种线程池, 然后再分别说下这些个线程池的意义。  
骨灰级的玩家就会说: 线程池核心的东西就是一个ThreadPoolExecutor类。

public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue,
                          ThreadFactory threadFactory,
                          RejectedExecutionHandler handler)
这里对这些参数做做个解释:
corePoolSize;核心线程数, 当任务数量超过了核心线程数,任务就会放入队列中
maximumPoolSize:最大线程数量, 当任务数量超过了最大线程数量,队列也满了, 就会执行拒绝策略,
keepAliveTime;存活时间, 当非核心线程没活干的时候, 还能活多久
unit:时间单位
workQueue:消息队列, 用来存任务, 一版有 : ArrayBlockingQueue,LinkedBlockingQueue,SynchronousQueue一版使用  LinkedBlockingQueue
threadFactory:线程工厂, 用来创建线程池
handler: 处理器, 表示拒绝策略, 一般有四种:ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值