线程池

ThreadPool

  • 线程池包含两个list
  • 一个是线程list 一个是等待队列的list
  • 一个线程池包含7个重要的参数
  1. corePoolSize: 核心线程数 线程池被创建时 该线程池中就会有这两个线程
  2. maximumPoolSize:最大线程数
  3. keepAliveTime: 如果线程池长期不工作会归还线程数 数量,但是不会归还核心线程
  4. keepAliveUnit: 如果线程池长期不工作会归还线程数 单位,但是不会归还核心线程
  5. 消费队列: 可以指定各种Queue
  6. 线程池工厂: 里面可以自定义线程的参数 比如group ,名称等等
    image-1652189410489
  7. 拒绝策略 比如抛异常 或者 无视或者抛弃一些线程的里的任务,也可以实现接口自己去实现。

SingleThreadPool

  • 一个只有一个任务的线程池,可以保证任务的顺序执行。

CachedPool

  • 没有核心线程,最大线程数为Integer.maxValue

FixedThreadPool

  • 接受一个参数 核心线程喝最大线程都为这个值,并且最大线程数为Integer 的最大值

ScheduledPool

  • 定时任务的线程池

WorkStealingPool

  • 每个线程都有自己单独的队列
  • 当某个线程 执行完以后他会去其他线程里替其他线程分担任务。

ForkJoinPool

  • 把一个大任务切换为多个小任务
  • 递归的任务,因为小任务还会存在小任务

other

image-1652189655264