码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 线程池的工作原理



    程序员的公众号:源1024,获取更多资料,无加密无套路!

    最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等
    获取方式: 关注公众号并回复 666 领取,更多内容持续奉上


    线程池主要是利用线程的复用性,将任务的提交和线程的创建、管理、执行分离,线程池来统一管理和调度,减少了创建和销毁线程的开销,提高了系统的效率。

    线程池的工作原理:

    1、任务提交时,线程池首先检查当前线程数是否小于核心线程数,如果小于,则新建一个线程来执行任务。

    2、如果当前线程数已经达到核心线程数,而且队列中没有正在执行的任务时,则将任务放入队列中等待执行。

    3、如果队列已满,且线程池中的线程数量未达到最大线程数,则新建线程来执行任务。

    4、如果队列已满,且线程池中的线程数量达到最大线程数,则根据拒绝策略来处理无法执行的任务。

    线程池的参数:

    1. 核心线程数(corePoolSize): 这是线程池中一直保持活动状态的最小线程数量。核心线程在空闲时不会被销毁,除非启用了 allowCoreThreadTimeOut 选项。核心线程数的设置直接影响了线程池的基本并发度。

    2. 最大线程数(maximumPoolSize): 当任务提交到线程池时,首先会尝试使用已有的空闲线程来处理,如果没有空闲线程则根据需要创建新线程。最大线程数限制了线程池可以创建的最大线程数量,过高的设置可能会导致资源消耗过多。

    3. keepAliveTime 和 TimeUnit: 这两个参数用于控制空闲线程的存活时间。如果线程在空闲时间超过 keepAliveTime 指定的时间段,它将被终止并从线程池中移除。合理的设置可以降低线程池的维护成本。

    4. 工作队列(workQueue): 工作队列用于存储等待执行的任务。不同类型的工作队列(如有界队列或无界队列)对线程池的性能有一定影响。有界队列可以避免无限制的任务积压,但可能导致任务丢失,而无界队列可能会占用更多的内存。

    实际工作中,要根据我们的实际情况,通过合理配置和调整参数,来优化线程池的性能,确保高效地处理任务并避免资源浪费。

  • 相关阅读:
    leetcode76 Minimum Window Substring
    el-form那些事
    深入理解与应用CSS clip-path 属性
    java计算机毕业设计web智慧医疗平台设计与实现源码+mysql数据库+系统+lw文档+部署
    【CS324】LLM(大模型的能力、数据、架构、分布式训练、微调等)
    【毕业设计】基于超声波与红外的自动调速风扇系统(代码开源) -物联网 嵌入式 stm32
    APIAuto——敏捷开发最强大易用的 HTTP 接口工具 (二)
    C++技能系列( 9 ) - 如何实现线程池【详解】
    PostgreSQL与MySQL数据库对比:适用场景和选择指南
    Advances in Graph Neural Networks笔记2:Fundamental Graph Neural Networks
  • 原文地址:https://blog.csdn.net/feikillyou/article/details/134319989
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号