砍材农夫砍材农夫
  • vuepress搭建
  • hexo搭建
  • 面试题
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • npm
    • webpack
    • 微信
    • 正则
    • uniapp
    • nodejs
  • java

    • java基础
    • jdk体系
    • jvm
    • spring
    • spring_cloud
    • spring_boot
    • 分库分表
    • zookeeper
  • python

    • python基础
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI工具
  • AI集成框架
  • 大模型
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • docker
  • k8s
  • devops
  • nginx
  • 元宇宙
  • 区块链
  • 物联网
  • linux
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • vuepress搭建
  • hexo搭建
  • 面试题
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • npm
    • webpack
    • 微信
    • 正则
    • uniapp
    • nodejs
  • java

    • java基础
    • jdk体系
    • jvm
    • spring
    • spring_cloud
    • spring_boot
    • 分库分表
    • zookeeper
  • python

    • python基础
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI工具
  • AI集成框架
  • 大模型
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • docker
  • k8s
  • devops
  • nginx
  • 元宇宙
  • 区块链
  • 物联网
  • linux
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • 首页
  • 基础

    • map循环
    • 委托
    • 泛型
    • 线程池
      • 线程池
      • 参数描述
      • workQueue
      • threadFactory
      • handler
  • 线程池
  • 参数描述
  • workQueue
  • threadFactory
  • handler

线程池

ThreadPoolExecutor(
 int corePoolSize,
 int maximumPoolSize,
 long keepAliveTime,
 TimeUnit unit,
 BlockingQueue<Runnable> workQueue,
 ThreadFactory threadFactory,
 RejectedExecutionHandler handler)

参数描述

  • corePoolSize: 线程池的核心线程数,当线程池中的线程数大于等于corePoolSize时,新任务将直接加入队列,而不是创建新线程
  • maximumPoolSize: 线程池的最大线程数,当线程池中的线程数大于等于maximumPoolSize时,新任务将直接加入队列,而不是创建新线程
  • keepAliveTime: 线程池中空闲线程的存活时间,当线程池中的线程数大于等于corePoolSize时,空闲线程在keepAliveTime时间后会被销毁
  • unit: keepAliveTime的单位
  • workQueue: 线程池的任务队列,当线程池中的线程数小于corePoolSize时,新任务将直接加入workQueue,否则将创建新线程执行任务
  • threadFactory: 线程工厂,用于创建线程
  • handler: 当线程池中的任务队列满了,且线程池中的线程数大于等于maximumPoolSize时,新任务将交给handler处理

workQueue

  1. ArrayBlockingQueue: 使用数组实现的有界阻塞队列,当队列满时,新任务将加入队列,阻塞等待,直到队列有空位
  2. LinkedBlockingQueue: 使用链表实现的有界阻塞队列,当队列满时,新任务将加入队列,阻塞等待,直到队列有空位
  3. SynchronousQueue: 无缓冲队列,当队列满时,新任务将加入队列,阻塞等待,直到队列有空位
  4. PriorityBlockingQueue: 使用优先级队列实现的有界阻塞队列,当队列满时,新任务将加入队列,阻塞等待,直到队列有空位
  5. DelayQueue: 使用延时队列实现的有界阻塞队列,当队列满时,新任务将加入队列,阻塞等待,直到队列有空位
  6. LinkedTransferQueue: 使用链表实现的无界阻塞队列,当队列满时,新任务将加入队列,阻塞等待,直到队列有空位

threadFactory

  1. Executors.defaultThreadFactory: 使用默认的线程工厂创建线程
  2. Executors.privilegedThreadFactory: 使用默认的线程工厂创建线程,并且具有权限

handler

  1. ThreadPoolExecutor.AbortPolicy: 当线程池中的任务队列满了,且线程池中的线程数大于等于maximumPoolSize时,新任务将交给handler处理,handler将抛出RejectedExecutionException异常
  2. ThreadPoolExecutor.DiscardPolicy: 当线程池中的任务队列满了,且线程池中的线程数大于等于maximumPoolSize时,新任务将交给handler处理,handler将丢弃任务
  3. ThreadPoolExecutor.DiscardOldestPolicy: 当线程池中的任务队列满了,且线程池中的线程数大于等于maximumPoolSize时,新任务将交给handler处理,handler将丢弃队列中最早的任务
  4. ThreadPoolExecutor.CallerRunsPolicy: 当线程池中的任务队列满了,且线程池中的线程数大于等于maximumPoolSize时,新任务将交给handler处理,handler将由当前线程执行任务
  5. ThreadPoolExecutor.RejectedExecutionHandler: 当线程池中的任务队列满了,且线程池中的线程数大于等于maximumPoolSize时,新任务将交给handler处理,handler将抛出RejectedExecutionException异常
Last Updated:
Contributors: jysemel
Prev
泛型