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()回调完成
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。