ThreadPoolExecutor构造器的参数说明

  • 参数一:指定线程池的核心线程数量(核心线程,长久不死亡): corePoolSize 不能小于0

  • 参数二:指定线程池可支持的最大线程数: maximumPoolSize 最大数量≥核心线程数量

  • 参数三:指定临时线程的最大存活时间: keepAliveTime 不能小于0

  • 参数四:指定存活时间的单位(秒、分、时、天): unit

  • 参数五:指定任务队列: workQueue 不能为null

  • 参数六:指定用哪个线程工厂创建线程: threadFactory 不能为null 线程工厂负责创建线程对象

  • 参数七:指定线程忙,任务队列满的时候,新任务来了怎么办: handler 不能为null 比如最大线程数是10个,任务队列长度是5,那么第16个任务来了之后 要怎么办?

如果你看不明白上面的参数介绍,没关系,下面我将用奶茶店的例子帮助理解记忆。

  • 核心线程相当于奶茶店的正式员工。
  • 最大线程数,指的是由于奶茶店后厨最多可以允许多少员工同时制作奶茶;后厨最多容纳员工数-正式员工数相当于奶茶店可以招多少个临时员工。
  • 存活时间指的是奶茶店里没有活干了,临时工在闲了多久之后,把临时工给开除了。
  • 任务队列指的是奶茶店的所有员工都在帮顾客制作奶茶,顾客可以坐在店里的座位上等待,这些座位就是任务队列。
  • 线程工厂可以理解为奶茶店老板,负责招人的。
  • 拒绝策略指的是,奶茶店里所有正式员工和临时员工都在忙,店里面排队等待的顾客也把座位坐满了,此时又来了一个客人咋办?你是把他拒之门外,还是抛异常?

常见面试题

临时线程什么时候创建?

  • 新任务提交时发现核心线程都在忙,任务队列也满了,并且还可以创建临时线程,此时才会创建临时线程。 这样设计的目的是最大限度的少创建线程,减少系统损耗。

  • 还是用奶茶店的例子来理解,老板发现店里面正式员工都在忙着制作奶茶(核心线程忙),座位上坐满了等待的客人(任务队列满),并且此时后厨还能站的下工作人员,于是抓紧招了几个临时工进店工作(创建临时线程)。

什么时候会开始拒绝任务?

  • 核心线程和临时线程都在忙,任务队列也满了,新的任务过来的时候才会开始任务拒绝。

  • 用奶茶店来理解就是所有后厨占满了员工且都在忙,店里面也坐满了等待的客户。此时开始执行拒绝任务。

Java线程池ThreadPoolExecutor参数讲解、实例助记 保证你过目不忘相关推荐

  1. Java 线程池详解及实例代码

    转载自  Java 线程池详解及实例代码 这篇文章主要介绍了Java 线程池的相关资料,并符实例代码,帮助大家学习参考,需要的朋友可以参考下 线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时 ...

  2. java 线程池ThreadPoolExecutor

    线程池 线程池的作用: 线程池作用就是限制系统中执行线程的数量. 根 据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制线程数 ...

  3. java线程池的参数设置

    java线程池的参数设置 在说如何对线程池优化之前重复一下线程的7大参数 corePoolSize: 核心线程数,也是线程池中常驻的线程数,线程池初始化时默认是没有线程的,当任务来临时才开始创建线程去 ...

  4. Java线程池ThreadPoolExecutor使用和分析(三) - 终止线程池原理

    相关文章目录: Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理 Java线程池Thr ...

  5. Java线程池ThreadPoolExecutor使用和分析

    Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) Java线程池ThreadPoolExecutor使用和分析(三 ...

  6. java线程池ThreadPoolExecutor类详解

    线程池有哪些状态 1. RUNNING:  接收新的任务,且执行等待队列中的任务 Accept new tasks and process queued tasks  2. SHUTDOWN: 不接收 ...

  7. Java 线程池(ThreadPoolExecutor)原理分析与使用 – 码农网

    线程池的详解 Java 线程池(ThreadPoolExecutor)原理分析与使用 – 码农网 http://www.codeceo.com/article/java-threadpool-exec ...

  8. Java线程池ThreadPoolExecutor的实例

    Java.util中的线程池和Spring框架对这个类的扩展 1.单独通过java里的ThreadPoolExecutor这个类,可以创建线程池,如果系统采用Spring框架设计,可以采用Thread ...

  9. Java 线程池 ThreadPoolExecutor 八种拒绝策略浅析

    前言 谈到 Java 的线程池最熟悉的莫过于 ExecutorService 接口了,jdk1.5 新增的 java.util.concurrent 包下的这个 api,大大的简化了多线程代码的开发. ...

最新文章

  1. Java基于Quartz的定时任务调度服务(一)
  2. 数据库SQL优化大总结之百万级数据库优化方案
  3. Pandas 中的这些函数/属性将被 deprecated
  4. java dao service实例_浅谈Action+Service +Dao 功能
  5. 互联网公司大厂中厂小厂分别指哪些公司?
  6. 单片机c语言曲普两只蝴蝶,51单片机蜂鸣器播放音乐代码(生日快乐 两只蝴蝶 祝你平安)...
  7. Ubuntu 禁止集成noueavu驱动并安装NVIDIA显卡驱动
  8. 计算机网络体系结构综述(上)
  9. MVP模式——Okhttp实现下载图片并带有进度 【Android Demo】
  10. 源码编译安装Netron模型可视化工具
  11. 色彩搭配原则和方法【转】
  12. Groovy学习(二):GDK初探
  13. 数据嗨客 | 第6期:不平衡数据处理
  14. HPC高性能计算知识: HPDA新兴技术分析(附下载)
  15. ROS2—小海龟仿真器基础使用
  16. 为什么Lisp如此先进,却永远成为不了编程主流语言?深度解析Lisp的优势与劣势
  17. 夏季晚睡早起符合养生原则
  18. SV环境搭建基础知识整合①
  19. 在 Power BI 中筛选每类产品的前三名
  20. 三类器械计算机信息管理系统,三类医疗器械计算机管理系统要求

热门文章

  1. 云媒易软文写作技巧:利用故事促进用户购买
  2. 双系统:在ubuntu系统下想要移动文件到其他位置/计算机或者系统根目录下提示权限不够的解决方式
  3. 机房重构之--数据库设计说明书
  4. 【艾琪出品】《计算机应用基础》【试题汇总5】
  5. 魔改hustoj源码使其支持显示队名和队员及女队标志
  6. JavaScript 注释相关
  7. linux运维练习实例,马哥linux运维实战练习案例(一)
  8. SAP数据输出筛选条件正反向选择实测
  9. python手机端游戏排行_Python学习枯燥?这几款编程手游让你边玩边学习
  10. linux修复ext4,修复super block(ext4)