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

【线程池的工作参数、什么情况下会触发最大线程数?什么情况下会回收线程?】

线程池是一个重要的 Java 并发编程工具,用于控制线程的创建、调度和回收,可以有效地提高程序的性能和资源利用率。

线程池的工作参数包括以下几个方面:

核心线程数(corePoolSize):

表示线程池中最少需要保持的活跃线程数,即使线程池中没有任务需要执行,核心线程也会一直存在。

最大线程数(maximumPoolSize):

表示线程池中最多能容纳的线程数,当线程池中的线程数达到最大值时,新的任务将会被放入任务队列等待执行。

任务队列(workQueue):

表示线程池中保存等待执行的任务的队列,当线程池中的线程数达到核心线程数时,新的任务将会被放入任务队列中等待执行。

线程存活时间(keepAliveTime):

表示非核心线程在空闲状态下的存活时间,当线程池中的线程数大于核心线程数时,非核心线程在空闲状态下的存活时间超过该值时将会被回收。

拒绝策略(handler):

表示当线程池中的线程数达到最大值,任务队列已满,并且线程池中的线程都在执行任务时,新的任务将会被拒绝的处理方式。常见的拒绝策略包括抛出异常、丢弃任务、丢弃最老的任务等。

当线程池中的线程数达到核心线程数时,新的任务将会被放入任务队列中等待执行。当任务队列也已满时,线程池会创建新的非核心线程,直到线程数达到最大线程数。因此,当线程池中的线程数达到最大线程数时,新的任务将会触发拒绝策略。

当非核心线程在空闲状态下的存活时间超过线程存活时间时,它们将会被回收。但是,核心线程不会被回收,即使它们在空闲状态下超过了线程存活时间。只有当线程池被关闭时或者[ 下一篇文章会讲怎么设置核心线程数也可以被回收?),核心线程才会被回收。

线程池中的线程会在以下几种情况下被回收:

当非核心线程在空闲状态下的存活时间超过线程存活时间时,它们将会被回收。
当线程池被关闭时,所有的线程都将会被回收。
当线程执行任务时发生异常而导致线程终止时,该线程也将会被回收。


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

相关文章:

  • 2025新年源码免费送
  • 获取地图文档中的图层列表
  • docker 基本使用
  • Python爬虫应用领域
  • uniapp:钉钉小程序需要录音权限及调用录音
  • Vue3+Element给表单设置多个验证+规则Rules自定义
  • Java设计模式(十四)—— 模板方法模式
  • Mars3d项目启动上的一些坑
  • day2 操作系统考点
  • 程序猿成长之路之密码学篇-AES算法介绍
  • 【Gem5】有关gem5模拟器的资料导航
  • 计算机基本知识框架
  • JAVA电子招标采购系统源码—企业战略布局下的采购
  • Maven项目混淆、瘦身、打包exe
  • 排序 堆排序_57
  • Redis缓存击穿和穿透以及雪崩
  • Shell echo 命令
  • 代码随想录算法训练营第五十八天|739. 每日温度、496.下一个更大元素 I
  • 第二十七章 纹理总结
  • @PostConstruct注解
  • 精准水位在流批一体数据仓库的探索和实践
  • elementUI使用
  • 一键卸载流氓垃圾软件,这2款软件让电脑干净无弹窗
  • 2.5 数据部分总结
  • 3月31号 上午 数据结构课程中 引出的几个算法题目
  • 合创科技C4D设计师网站大全