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

线程池的线程回收

线程池

线程池里面分为核心线程和非核心线程。 核心线程是常驻在线程池里面的工作线程,它有两种方式初始化:
  • 向线程池里面添加任务的时候,被动初始化
  • 主动调用 prestartAllCoreThreads 方法

当线程池里面的队列满了的情况下,为了增加线程池的任务处理能力。线程池会增加非核心线程。核心线程和非核心线程的数量,是在构造线程池的时候设置的,也可以动态进行更改 。

非核心线程

由于非核心线程是为了解决任务过多的时候临时增加的,所以当任务处理完成后,工作线程处于空闲状态的时候,就需要回收。 因为所有工作线程都是从阻塞队列中去获取要执行的任务,所以只要在一定时间内, 阻塞队列没有任何可以处理的任务,那这个线程就可以结束了。 这个功能是通过阻塞队列里面的 poll 方法来完成的。这个方法提供了超时时间和超时 时间单位这两个参数 当超过指定时间没有获取到任务的时候,poll 方法返回 null,从而终止当前线程完成线程回收。

核心线程

默认情况下,线程池只会回收非核心线程,如果希望核心线程也要回收,可以 设置 allowCoreThreadTimeOut 这个属性为 true,一般情况下我们不会去回收核心线 程。 因为线程池本身就是实现线程的复用,而且这些核心线程在没有任务要处理的时候是处 于阻塞状态 并没有占用 CPU 资源。
http://www.lryc.cn/news/210503.html

相关文章:

  • 【2023.10.25练习】数据库-函数1
  • 基于水循环算法的无人机航迹规划-附代码
  • JVM调优(10)JVM的运行时数据区
  • Python网络爬虫介绍
  • iOS QR界面亮度调整
  • Linux shell编程学习笔记17:for循环语句
  • Go语言用Resty库编写的音频爬虫代码
  • AWTK 液体流动效果控件发布
  • 对mysql的联合索引的深刻理解
  • C的自定义类型
  • 我的创作纪念日 - 2048
  • 拿捏面试官,高频接口自动化测试面试题总结(附答案)狂收offer...
  • 大数据-Storm流式框架(六)---Kafka介绍
  • 自动驾驶的未来展望和挑战
  • 2.11、自定义图融合过程与量化管线
  • Linux——文件权限属性和权限管理
  • 数组与链表算法-单向链表算法
  • Oracle(6) Control File
  • 吴恩达《机器学习》2-5->2-7:梯度下降算法与理解
  • Pytorch detach()方法
  • CTF-php特性绕过
  • 人脸识别测试数据分析
  • MySQL 5.7限制general_log日志大小
  • tomcat9~10猫闪退个人经验
  • Linux之J2EE的项目部署及发布
  • 基于闪电搜索算法的无人机航迹规划-附代码
  • 【网络安全 --- 文件上传靶场练习】文件上传靶场安装以及1-5关闯关思路及技巧,源码分析
  • BUUCTF刷题记录
  • 黑客技术(网络安全)—小白自学
  • 免登陆 同步脚本 zookeeper kafka集群详细安装步骤