线程池提问

线程池八股文提问

Q: 提问七个核心参数分别代表什么?

A: 核心线程数 最大线程数 拒绝策略 存活时间 时间单位 任务队列 线程工厂


Q: “如果核心线程数是 5,队列长度是 100,最大线程数是 10。现在瞬间进来了 100 个任务,线程池是怎么处理的?”

A: 先创建5个核心线程处理任务,将95个任务放到队列里


Q: 如果此时又进来了 15 个任务(总共 115 个),会发生什么?

A: 先将5个塞进队列,然后创建5个临时线程,最后5个没地方了,触发拒绝策略


Q: shudown和ShutdownNow的区别

A:
shutdown 属于优雅停机 会完成正在执行的和阻塞队列里的在退出
shutdownnow 不优雅,会尝试中断当前任务和不执行阻塞队列里的 但会返回一个List供手动补偿


四种拒绝策略

  1. 直接丢弃策略
  2. 抛异常策略
  3. 返回让提交任务的线程自己执行
  4. 丢弃队列最久的策略 把当前加入

自己干活有个调用者策略

CPU密集型N+1 IO密集型2N还是要具体压力测试才行

LINKLISTBLOCKQUEUE 需要设定最大长度

有异常就线程移出线程池 会补新线程