Java线程池

更多多线程相关知识点详见个人主页【多线程相关】专栏

线程池

7个参数

  • corePoolSize
    • 核心线程数,线程池中始终存活的线程数,即使它们是空闲的
  • maximumPoolSize
    • 最大线程数,线程池中允许的最大线程数
  • keepAliveTime
    • 当线程数大于核心线程数时,空闲线程在等待新任务到达的最大时间
  • unit
    • keepAliveTime的时间单位,可以是天、小时、分钟、秒等
  • workQueue
    • 一个阻塞队列,用来存储线程池等待执行的任务
  • threadFactory
    • 线程工厂,主要用来创建线程,默认为正常优先级、非守护线程
  • handler
    • 拒绝策略,当任务过多(处理不过来)时提供的策略

分配线程的顺序

  • 首先使用核心线程来执行任务
  • 如果核心线程都忙,且任务队列未满,任务会被放入任务队列中
  • 如果核心线程都忙,且任务队列已满,且线程数小于最大线程数,线程池会创建非核心线程来处理任务
  • 如果核心线程都忙,且任务队列已满,如果线程数已经达到最大线程数,线程池会采取拒绝策略来处理新提交的任务

4种拒绝策略

  • AbortPolicy:丢弃任务,并抛出RejectedExecutionException异常
  • CallerRunsPolicy:由调用线程(提交任务的线程)来处理该任务
  • DiscardPolicy:直接丢弃无法处理的任务,不进行任何特殊处理
  • DiscardOldestPolicy:丢弃队列中等待最久的任务,然后尝试再次提交当前任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值