线程池如何保证核心线程一直存活

转载请注明出处:

查看 ThreadPoolExecutor 类中的 getTask 方法,这个方法可以保持核心线程在没有任务的时候也可以一直处于存活状态

核心在于 workQueue.poll 和 workQueue.take() 两个方法,且前面会判断 当前线程数,如果 当前线程数等于核心线程数时,就会调用 take 方法,让线程向队列获取任务的状态一直保持阻塞状态,通过这个方法就可以保证核心线程一直存活状态。

看下 take 与 poll 方法的区别:

take:会响应中断,会一直阻塞直到取得元素或当前线程中断。如果队列中没有数据,则线程wait释放CPU
poll:会响应中断,会阻塞,阻塞时间参照方法里参数 timeout,timeUnit,当阻塞时间到了还没取得元素会返回null

Original: https://www.cnblogs.com/zjdxr-up/p/16339310.html
Author: 香吧香
Title: 线程池如何保证核心线程一直存活

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/613033/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java50个关键字之static

    关键字static主要有两种作用:第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。第二,希望某个方法或属性与类而不是对象关联在一起,也就是说,在不创建对象的…

    Linux 2023年6月7日
    0103
  • Redis Persistent Replication Sentinel Cluster的一些理解

    Redis Persistent Replication Sentinel Cluster的一些理解 我喜欢把工作中接触到的各种数据库叫做存储系统,笼统地说:Redis、Mysql…

    Linux 2023年5月28日
    077
  • Docker-资源限制(Cgroup)

    Docker-资源限制 1.Cgroup简介 _cgroups,是一个非常强大的linux内核工具,他不仅可以限制被namespace隔离起来的资源,还可以为资源设置权重、计算使用…

    Linux 2023年6月13日
    083
  • Linux Ubuntu 添加新用户

    1. 了解配置文件 Linux下与用户信息相关的配置文件有 /etc/passwd、 /etc/group、 /etc/shadow等,其权限分别如下: /etc/passwd:保…

    Linux 2023年6月14日
    0125
  • centos7自动化ssh免密

    在做免密前要先手动生成公钥: ssh-keygen -t rsa 敲击三次回车即可 写一个shell脚本: expect命令可以获取到命令返回结果并且根据指定内容进行自动发送相应字…

    Linux 2023年6月6日
    0149
  • Docker 安装 MySQL、Redis

    1 Docker 中安装 Redis 1.1 创建目录 在硬盘上创建 redis 的数据目录: mkdir -p /Users/yygnb/dockerMe/redis/data …

    Linux 2023年6月7日
    0107
  • Centos 6 DNS 配置 解决 Unknown host

    测试服务器Maven 打包时遇到了如下的错误 看上去应该是对 maven.aliyun.com的DNS 域名解析出问题了。 登录到服务器上 ping maven.aliyun.co…

    Linux 2023年5月27日
    0107
  • npm常用命令

    npm install npm install=npm i。在git clone项目的时候,项目文件中并没有 node_modules文件夹,项目的依赖文件可能很大。直接执行,np…

    Linux 2023年6月13日
    0110
  • Shell脚本生成密码

    利用 /dev/urando 生成密码 密码以字母、数字、开头 特殊符号多 for _ in {1..30};do tr -dc ‘~`!@#$%^&*()_+-={}:&…

    Linux 2023年6月6日
    0117
  • Linux 下统计文件夹下文件的数量

    1、查看当前目录下的文件数量(不包含子目录中的文件) 2、查看当前目录下的文件数量(包含子目录中的文件) 3、 查看当前目录下的文件夹目录个数(不包含子目录中的目录),同上述理,如…

    Linux 2023年6月13日
    0111
  • 一篇文章Shell脚本快速入门

    Shell脚本基础入门 Bash注释 Bash只支持单行注释,使用 #开头的都被当作注释语句: 整行注释 echo hello world # 行尾注释 通过Bash的一些特性,可…

    Linux 2023年5月28日
    073
  • 正则表达式 8. 特殊限制(环视否定)

    https://www.zybuluo.com/Zjmainstay/note/709093 特殊限制(环视否定) (8.1)使用\d{1,3}匹配1-999的数据,不能以0开头 …

    Linux 2023年6月13日
    0110
  • SSH加密原理

    1、SSH初次交换公钥 客户端发起链接请求 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥) 客户端生成密钥对 客户端用自己的公钥异或会话ID,计算出一个值Re…

    Linux 2023年6月7日
    099
  • 常用命令-watch

    每隔一秒高亮显示网络链接数的变化情况 每隔一秒高亮显示http链接数的变化情况 实时查看模拟攻击客户机建立起来的连接数 监测当前目录中 scf 的文件的变化 10秒一次输出系统的平…

    Linux 2023年6月6日
    0119
  • WEB自动化-12-Cypress 调试

    12 调试 Cypress的测试代码和被测试程序在同一生命周期中的浏览器中,也就是意味着,可以使用浏览器的开发者工具直接参与调试。Cypress提供了几种调试方法,分别为: deb…

    Linux 2023年6月7日
    086
  • 门罗币XMR最新挖矿算法RandomX设计原理

    Randomx算法-门罗币XMR的挖矿新算法 RandomX算法设计目标是抗ASIC+降低GPU优势。 Monero门罗币XMR计划于2019年的10月份启用最新的RandomX …

    Linux 2023年6月6日
    0102
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球