当前位置: 首页 > article >正文

小白学多线程(持续更新中)

1.JDK中的线程池

JDK中创建线程池有一个最全的构造方法,里面七个参数如上所示。

执行流程分析:

模拟条件:10个核心线程数,200个最大线程数,阻塞队列大小为100。

  • 当有小于十个任务要处理时,因为小于核心线程数,所以直接有对应的核心线程处理
  • 当有11个任务,前十个由核心线程处理,第11个进入等待/阻塞队列中,如果核心线程完成任务,则核心线程再处理
  • 当有111个任务,前10个由核心线程处理,后续100个进入等待/阻塞队列中,最后一个需要创建救急线程,第三四个参数设定了救急线程的生产时间和单位,意思是救急线程完成任务后,需要多久才会释放这个救急线程
  • 当有201个任务,因为任务数量大于了最大线程,所以在执行第201个任务时,会执行拒绝策略

2.Tomcat中的线程池

注意,Tomcat中的线程池和JDK的线程池有所不同。如果执行的请求数大于核心线程数并且小于最大线程数,会直接创建新的线程,达到最大线程数后,才会在等待队列中。如果等待队列满了,才会报异常。

模拟条件:10个核心线程数,200个最大线程数,阻塞队列大小为100。

  • 当有小于十个任务要处理时,因为小于核心线程数,所以直接有对应的核心线程处理
  • 当有11个任务,前十个由核心线程处理,第11个因为小于最大线程数,所以直接创建新的线程
  • 当有201个任务,前10个由核心线程处理,后续190个是创建新的线程来处理,第201个会进入阻塞队列
  • 当有301个任务,执行第301个任务时因为超出了最大线程数,并且阻塞队列也满了,这时会抛出异常

springboot中配置tomcat线程池相关参数为:

server:
  tomcat:
    threads:
      max: 200
      min - spare: 10
    accept - count: 100

其中:max为最大线程数,min-spare为最小空余线程数,也可以理解为核心线程数,accept-account为阻塞队列数


http://www.kler.cn/a/407293.html

相关文章:

  • 字符串的常用函数
  • 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例
  • wend看源码-APISJON
  • C#桌面应用制作计算器进阶版01
  • xiaolin coding 图解网络笔记——HTTP篇
  • uniapp发布android上架应用商店权限
  • 法语旅游常用口语-柯桥学外语到蓝天广场泓畅学校
  • 鸿蒙NEXT开发案例:数字转中文大小写
  • 【SSL-RL】增强Curiosity-driven Exploration (CDE)算法的探索能力
  • [Java进阶] 反射机制及其应用场景
  • windows10 | mathtype导致word中ctrl+v不能用
  • 数据结构与算法——1120——时间空间效率问题求边界值
  • 【神经网络基础】
  • js判断一个对象身上是否有某个属性
  • 位运算算法
  • 5分钟轻松搭建Immich图片管理软件并实现公网远程传输照片
  • 嵌入式硬件实战基础篇(三)-四层板PCB设计-步进电机驱动(TMC2208/TMC2209)
  • Vim 命令、操作、文件操作示例
  • 40分钟学 Go 语言高并发:Context包与并发控制
  • React和Next.js的相关内容
  • Gate学习(4) 指令学习1
  • Python BeautifulSoup 常用语句详解
  • MySql四种事务隔离级别以及使用什么隔离级别可以解决幻读
  • 游戏引擎学习第20天
  • Android中的依赖注入(DI)框架Hilt
  • 【案例】泛微.齐业成助力北京中远大昌汽车实现数电票全流程管理