线程池的七大参数

线程池的七大参数

  1. corePoolSize: 线程池中常驻核心线程数
  2. maximumPoolSize: 线程池中能够同时执行的最大线程数,此值必须大于等于1
  3. keepAliveTime: 多余的空闲线程的存活时间;当线程池数量抄错corePoolSize时,当空闲时间达到keepAliveTime时,多余线程会被销毁直到只剩下corePoolSize个线程为止
  4. unit: keepAliveTime的单位
  5. workQueue: 任务队列,被提交单尚未执行的队列
  6. threadFactory: 表示生成线程池中工作线程的线程工厂,用于创建线程,一般默认即可
  7. handler: 拒绝策略,表示当队列满了并且工作线程大于等于线程池的最大线程数(maximumPoolSize)是如何来拒绝
    AbortPolicy(默认): 直接抛出RejectedExecutionException异常阻止系统的正常运行。
    CallerRunsPolicy: "调用者运行"一种调节机制,该策略既不会抛弃任务,也不会抛出异常,而是将默写任务退回到调用者。
    DiscardOldestPolicy: 抛弃队列中等待最久的任务,然后把当前任务加入到队列中尝试再次提交当前任务。
    DiscardPolicy: 直接丢弃任务,不予任何处理,也不抛出异常。如果允许任务丢失,这是最好的一种方案。

合理配置线程池

  1. CPU密集型任务配置尽可能少的线程数量:
    该任务需要大量的运算,而没有阻塞,CPU一直全速运行。一般公式:CPU核数+1个线程的线程池
  2. IO密集型:
    由于IO密集型任务线程并不是一直在执行任务,则应配置尽可能多的线程,如CPU核数*2
    IO密集型时,大部分线程都阻塞,故需要多配置线程数。参考公式:CPU核数/(1-阻塞系数) 阻塞系数在0.8~0.9之间。例如:8核/(1-0.9) = 80
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值