线程池面试笔记(B站动力节点)

1.线程池的核心参数

  1. 定义线程池数量8个(核心线程数)
  2. 最大数量16个(当核心线程全部都繁忙且任务队列存满之后,线程池会临时追加线程,直到总线程数达到maximumPoolSize这个上限)
  3. long keepAliveTime 线程空闲时时间,如果一个线程处于空闲转态,并且当前的线程数量大于corePoolSize,那么在指定时间后,这个空闲线程会被销毁(销毁的是非核心线程)
  4. keepAliveTime存活时间的时间单位(天,小时,分,秒.....)
  5. new ArrayBlockingQueue<Runnable>(1024)核心线程都被使用时,允许存在队列的任务个数
  6. ThreadFactory threadFactory,线程工厂,用于创建线程,一般采用默认的线程工厂即可,代码如下: Executors.defaultThreadFactory()
  7. RejectedExecutionHandler handler,拒绝策略,当任务太多来不及处理时,如何拒绝任务
    当核心线程池corePoolSize正在执行任务,线程池的任务队列workQueue已满,线程池中的线程数达到maximumPoolSize时,就需要“拒绝”掉提交过来的任务

  • 若想创建线程池后初始化一个线程就执行以下代码

  • 若想创建线程池后初始化所有线程就执行以下代码

  • 若想让核心线程也能超时销毁就编写以下代码(默认是false)

线程池有那些拒绝策略(解析第七个核心参数)

  • 你还可以通过实现RejectedExecutionHandler接口,实现自定义拒接策略

2.说一说线程执行的流程

线程池核心线程数设置原则:

线程执行时间越多,就需要越少的线程。

线程等待时间越多,就需要越多的线程。(cpu的使用并不多)

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值