线程池相关面试题

一、JDK自带的线程池有那些?

1.Executors.newCachedThreadPool()

创建一个可缓存线程的线程池,若线程池长度超出需要,可回收线程,若没有可回收,则新建线程

2.Executors.newFixedThreadPool()

创建定长线程池,可控制线程最大并发数,超出的线程在队列中等待

3.Executors.newScheduledThreadPool()

创建定长线程池,支持定时和周期性任务执行

4.Executors.newSingleThreadExecutor()

创建单线程化的线程池,用唯一的线程工作,保证任务按指定顺序执行

二、线程池中核心线程数、最大线程数、缓冲任务队列的关系?

线程池的工作机制:

  • 先使用核心线程执行任务
  • 当核心线程不足时,新任务入队列等待
  • 当队列满且线程数未达最大值时,增加非核心线程执行任务
  • 当队列满且线程数已达最大值时,触发拒绝策略处理新来的任务

三、为什么阿里巴巴不推荐使用JDK自带的线程池?

  1. 资源耗尽的风险
  2. 拒绝策略不明确
  3. 线程池参数优化
  4. 监控和调试难度
    阿里巴巴推荐使用ThreadPoolExrcutor手动创建线程池,为了增强系统稳定性,降低资源耗损风险,提高开发者对线程池的控制

你可能感兴趣的:(java,开发语言)