Java线程池

1. Java线程池的种类

  • 基本: ThreadPoolExecutor
  • CachedThreadPool: 线程数量无限制,会释放空闲线程
  • FixedThreadPool: 指定工作线程最大数量,不释放工作线程
  • ScheduledThreadPool: 单线程顺序执行
  • SingleThreadExecutor:延迟或者定期执行

2. 线程池参数设置

  • corePoolSize: 基本大小。线程池建立以后里面并没有线程,有任务到来才创建线程,当线程池中的线程数目达到corePoolSize后,就会将任务加到缓存队列里面
  • maximumPoolSize: 线程池允许创建的最大线程数。缓存队列满,并且已创建的线程数小于这个梳理,就会创建新的线程执行任务
  • keepAliveTime: 线程活动保持时间。线程池的工作线程空闲后,保持存活的时间
  • workQueue: 任务队列
    • ArrayBlockingQueue
    • LinkedBlockingQueue
    • SynchronousQueue
    • PriorityBlockingQueue
  • handle饱和策略
    • AbortPolicy: 抛出异常
    • CallerRunsPolicy: 调用者自己执行
    • DiscardOldestPolicy: 丢弃时间最早的任务
    • DiscardPolicy: 不执行

3. 线程池状态

  • RUNNING:启动后
  • SHUTDOWN: 调用shutdown(), 没有正在关闭, 不能接收新任务, 尝试终止正在执行的任务
  • STOP:调用shutdownNow()
  • TIDYING:线程池和队列为空
  • TERMINATED: terminated()回调完成

你可能感兴趣的:(Java线程池)