关于线程池你需要知道的事情

首先,在了解线程池之前,你是否在大脑中提出过一个问题,什么是线程池?为什么要有线程池?

  1. 线程池

    说到线程池,也许你应该听过和它具有同样效果的常量池和连接池。
    通俗的讲就是一个池子(类),在这个池子中有多个线程,用来处理多个业务。

  2. 存在的意义:

    首先要从线程的生命周期来看,一个线程必然要经历的过程有创建和销毁。当我们的某个业务模块要处理成千上万乃至上亿次请求时,如果该线程在每处理一次请求时总是进行重复的创建和销毁,那么对我们系统的压力是很大的,因此,某一天,有个程序员就想:要是这个线程一直存在,不就可以随时去调用它,节约了创建和销毁所带来的开销。

  3. 线程池的参数:

    1、corePoolSize(核心线程数)
    (1)核心线程会一直存在,即使没有任务执行
    (2)当线程数小于核心线程数时,即使有空闲线程,也会一直创建线程直到大道和弦线程树
    (3)设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭
    2、queueCapacity(任务队列容量)
    也叫阻塞队列,当核心线程都在运行,此时再有任务进来,会进入任务队列,排队等待线程执行。
    3、maxPoolSize(最大线程数)
    (1)线程池里允许存在的最大线程数量
    (2)当任务队列已满,且线程数量大于等于核心线程数时,会创建新的线程执行任务
    4、keepAliveTime(线程空闲时间)
    (1)当线程空闲时间达到keepAliveTime时,线程会退出(关闭),直到线程数等于核心线程数
    (2)如果设置了allowCoreThreadTimeout=true,则线程会退出知道线程数等于零
    5、allowCoreThreadTimeout(允许核心线程超时)
    6、rejectedExcutionHandler(任务拒绝处理器)
    (1)当线程数量达到最大线程数,且任务队列已满时,会拒绝任务
    (2)调用线程池shutdown()方法后,会等待执行完线程池的任务之后,再shutdown()。如果在调用了shutdown()方法和线程池真正shutdown()之间提交任务,会拒绝新任务。

  4. 处理流程:

在这里插入图片描述
图片来自:https://www.jianshu.com/p/7ab4ae9443b9

大概通俗的讲述了一下池的思想,谢谢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值