《Java并发编程实战》中关于allowCoreThreadTimeOut描述的个人见解

2023-05-16

最近在看《Java并发编程实战》这本书,的确有很大的收获。看到8.3.1节关于线程的创建与销毁时,底下的注释提到了ThreadPoolExecutor中allowCoreThreadTimeOut的用法。我认为表述有一些错误。

ThreadPoolExecutor的通用构造函数如下

public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue,
                          ThreadFactory threadFactory,
                          RejectedExecutionHandler handler) { ... }

我们首先简单了解以上参数相关的规则

  1. 当线程池小于corePoolSize时,新提交任务将创建一个新线程执行任务,即使此时线程池中存在空闲线程。
  2. 当线程池达到corePoolSize时,新提交任务将被放入workQueue中,等待线程池中任务调度执行
  3. 当workQueue已满,且maximumPoolSize>corePoolSize时,新提交任务会创建新线程执行任务
  4. 当提交任务数超过maximumPoolSize时,新提交任务由RejectedExecutionHandler处理
  5. 当线程池中超过corePoolSize线程,空闲时间达到keepAliveTime时,关闭空闲线程
  6. 当设置allowCoreThreadTimeOut(true)时,线程池中corePoolSize线程空闲时间达到keepAliveTime也将关闭

可以看出,allowCoreThreadTimeOut这个方法就像其字面的意思一样,允许Core Thread超时后可以关闭。

而在书中有这样的表述
这里写图片描述
对应的英文原版

In Java 6, allowCoreThreadTimeOut allows you to request that all pool threads be able to time out; enable this feature with a core size of zero if you want a bounded thread pool with a bounded work queue but still have all the threads torn down when there is no work to do.

书上说了,要想使线程池没有任务时销毁所有的进程,需要启用allowCoreThreadTimeOut(true)同时将core size设置为0,而实际上,core size设置成任意一个正数值就可以,设置成0时,加不加allowCoreThreadTimeOut(true)都没有影响,因为这个方法是对core thread产生影响,但此时core thread为0,而且当新任务进来时,必须等到workQueue满时才会创建新线程,这也不是我们想要的结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《Java并发编程实战》中关于allowCoreThreadTimeOut描述的个人见解 的相关文章

  • 硬币表示

    有数量不限的硬币 xff0c 币值为25分 10分 5分和1分 xff0c 请编写代码计算n分有几种表示法 给定一个int n xff0c 请返回n分有几种表示法 保证n小于等于100000 xff0c 为了防止溢出 xff0c 请将答案M
  • 最长公共子序列

    我们有两个字符串m和n xff0c 如果它们的子串a和b内容相同 xff0c 则称a和b是m和n的公共子序列 子串中的字符不一定在原字符串中连续 例如字符串 abcfbc 和 abfcab xff0c 其中 abc 同时出现在两个字符串中
  • 完全二叉树的特点

    定义 完全二叉树是由满二叉树而引出来的 对于深度为K的 xff0c 有n个结点的二叉树 xff0c 当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树 一棵二叉树至多只有最下面的一层上的结点的度数可以小
  • 数据库事务的四大特性与隔离级别及测试

    四大特性 原子性 xff08 Atomicity xff09 原子性是指事务包含的所有操作要么全部成功 xff0c 要么全部失败回滚 xff0c 这和前面两篇博客介绍事务的功能是一样的概念 xff0c 因此事务的操作如果成功就必须要完全应用
  • Integer与int的比较

    原文 xff1a http blog csdn net yang5726685 article details 54572938 locationNum 61 2 amp fps 61 1 Integer与int的比较 Java是一个近乎纯
  • 装箱问题

    01背包 span class hljs keyword for span int span class hljs built in i span 61 span class hljs number 0 span span class hl
  • 采药

    01背包 Problem Description 辰辰是个天资聪颖的孩子 xff0c 他的梦想是成为世界上最伟大的医师 为此 xff0c 他想拜附近最有威望的医师为师 医师为了判断他的资质 xff0c 给他出了一个难题 医师把他带到一个到处
  • 解决OpenCV在Python中无法使用cv2.face的问题

    1 包不完整 只用pip install opencv python 装的依赖之后第二个 xff0c 这样里边没有face模块 xff0c 需要装第一个依赖才行 pip install opencv contrib python 2 包完整
  • 生日礼物

    01背包 Problem Description 一对双胞胎兄妹同一天过生日 xff0c 这一天 xff0c 他们的朋友给他俩送来了礼物 xff0c 每个人送的礼物都是2本书 xff0c 一本给哥哥 xff0c 一本给妹妹 xff0c 但没
  • 砝码称重

    多重背包 Problem Description 设有1g 2g 3g 5g 10g 20g的砝码各若干枚 xff08 其总重 lt 61 1000 xff09 xff0c 要求 xff1a 输入方式 xff1a a1 a2 a3 a4 a
  • Piggy-Bank

    完全背包 Problem Description Before ACM can do anything a budget must be prepared and the necessary financial support obtain
  • Edit Distance(LeetCode)

    Given two words word1 and word2 find the minimum number of steps required to convert word1 to word2 each operation is co
  • OSI,TCP/IP,五层协议的体系结构,以及各层协议简介

    OSI分层 xff08 7层 xff09 xff1a 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 TCP IP分层 xff08 4层 xff09 xff1a 网络接口层 网际层 运输层 应用层 五层协议 xff08 5层 x
  • IP地址的分类,及子网掩码,网络号,主机号

    A类地址 xff1a 以0开头 xff0c 第一个字节范围 xff1a 1 127 xff08 1 0 0 0 127 255 255 255 xff09 xff1b B类地址 xff1a 以10开头 xff0c 第一个字节范围 xff1a
  • 了解集线器,调制解调器,交换机、路由器、网关的概念,并知道各自的用途

    集线器 集线器是对网络进行集中管理的重要工具 xff0c 像树的主干一样 xff0c 它是各分支的汇集点 xff0c 它的实质是一个中继器 xff0c 而中继器的主要功能是对接收到的信息进行再生放大 xff0c 以扩大网络的传输距离 简单点
  • 并查集

    并查集作用 xff1a 1 判断两节点是否联通 2 连接两个节点 xff0c 使之联通 并查集数据结构 xff1a 多路树结构 例 xff1a 存储结构 xff1a 数组模拟 xff1a 设数组为pre i i为当前节点 xff0c pre
  • 袋鼠过河

    一只袋鼠要从河这边跳到河对岸 xff0c 河很宽 xff0c 但是河中间打了很多桩子 xff0c 每隔一米就有一个 xff0c 每个桩子上都有一个弹簧 xff0c 袋鼠跳到弹簧上就可以跳的更远 每个弹簧力量不同 xff0c 用一个数字代表它
  • 最短路径算法(Dijkstra)

    一 前言 最短路径算法 xff0c 顾名思义就是求解某点到某点的最短的距离 消耗 费用等等 xff0c 有各种各样的描述 xff0c 在地图上看 xff0c 可以说是图上一个地点到达另外一个地点的最短的距离 比方说 xff0c 我们把地图上
  • linux安装nodejs【详细教程】

    一 下载node包 先看一下官网 https nodejs org en download 下载 Node js 中文网 nodejs cn 二 将node包放到linux上 1 解压 xff1a tar xvf node v14 15 1
  • 红明谷杯-SMU

    2021红明谷杯安全意识赛 一 单项选择题 1 以下不属于采用密码技术对数据本身进行保护的是 xff08 xff09 A 防火墙技术 B 使用现代加密算法对数据进行加密以获得机密性 C 采用数字签名算法确保数据源的可靠性 D 采用杂凑算法和

随机推荐

  • tcp窗口滑动以及拥塞控制

    转自 xff1a http blog chinaunix net uid 26275986 id 4109679 html TCP协议作为一个可靠的面向流的传输协议 xff0c 其可靠性和流量控制由滑动窗口协议保证 xff0c 而拥塞控制则
  • 小胖的水果(lcs)

    描述 xuzhenyi到大同水果店去买水果 xff0c 但老板huyichen告诉他每次只能买一种 xff0c 但是xuzhenyi想吃两种 xff0c 于是在讨价还价之后 xff0c huyichen说只要xuzhenyi能把他想要的两种
  • 神秘的咒语(Lcis)

    描述 身为拜月教的高级间谍 xff0c 你的任务总是逼迫你出生入死 比如这一次 xff0c 拜月教主就派你跟踪赵灵儿一行 xff0c 潜入试炼窟底 据说试炼窟底藏着五行法术的最高法术 xff1a 风神 xff0c 雷神 xff0c 雪妖 x
  • 合唱队形(LIS)

    描述 N位同学站成一排 xff0c 音乐老师要请其中的 N K 位同学出列 xff0c 使得剩下的K位同学排成合唱队形 合唱队形是指这样的一种队形 xff1a 设K位同学从左到右依次编号为1 xff0c 2 xff0c K xff0c 他们
  • 二分图匹配

    二分图匹配 xff0c 自然要先从定义入手 xff0c 那么二分图是什么呢 xff1f 二分图 xff1a 二分图又称作二部图 xff0c 是图论中的一种特殊模型 设G 61 V E 是一个无向图 xff0c 如果顶点V可分割为两个互不相交
  • 内存管理

    概念 内存管理 Memory Management 是操作系统设计中最重要和最复杂的内容之一 虽然计算机硬件一直在飞速发展 xff0c 内存容量也在不断增长 xff0c 但是仍然不可能将所有用户进程和系统所需要的全部程序和数据放入主存中 x
  • Android 二级图片缓存,图片优化,图片异步加载框架设计

    简介 从用户角度上看对上手机流量的关心 xff0c 一张图片1 4M 如果每次都请求网络加载 xff0c 一张重复的图片却要加载多次很容易消耗特别多的流量 从android平台机制上 xff0c android 移动端本身内存就小 xff0
  • 秋招面试经验分享-阿里,cvte,迅雷,网龙,美团,已拿Offer

    什么是秋招 针对秋招一般是在9 10月份 xff0c 到11月份后还在招聘的公司就很少了 xff0c 在7 8月份一般都会有秋招内推 关于秋招内推可以找自己认识的学长学姐或论坛上的某公司的职员进行内推 xff0c 这个其实牛客网上在7 8月
  • Get新技能学习 android studio git-github

    连接git 没有下载git的需要先下载 xff0c 下载渠道直接QQ软件中就有 下载完后 xff0c 选择路径进行连接 连接GitHub 记得输入账号密码哦 xff01 创建库 上传完后就可以在github上project中看到啦 点击它
  • 斯坦福大学公开课IOS 7学习笔记 (1)

    斯坦福大学公开课IOS 7 xff08 1 xff09 ios 架构 core OS Core Services Media Cocoa Touch Core OS OSX Kernel Unix OS Power Management M
  • Linux+CentOS安装Google安装包,缺少依赖文件,解决办法

    Linux 43 CentOS安装Google安装包 xff0c 缺少依赖文件 安装时主要有三个依赖文件检测失败 xff1a libappindicator3 so 1 liberation fonts和libvulkan so 1 xff
  • OC 协议与代理

    协议 定义 oc的协议有点类似java中的接口 xff0c 当某个类使用也该协议就必须实现协议中所定义的方法 xff0c 实际上不定义也不会报错 xff0c 但会发出警告 xff0c 在代码运行中如果没有实现协议中的方法 xff0c 那么就
  • OC中的集合

    参考博客 xff1a http blog csdn net hierarch lee article details 49834151 简介 在Objective C中的集合类中主要包括不可变的数组 NSArray 可变的数组 NSMuta
  • Windows Server 2016 安装步骤

    目录 1 1准备操作 1 2 开始安装 1 3 系统初始操作 1 4 附言 1 1准备操作 准备工具 xff1a VMware Workstation xff0c Windows Server 2016镜像 本教程里所展示的VMware版本
  • Windows Server 2016 文件操作系统 跨区卷 镜像卷 RAID5卷 ISCSI设置

    目录 简述 前言 说明 正文1 创建跨区卷 1 2 创建镜像卷 1 3 创建RAID5卷 2 使用存储池新建mirror布局的磁盘 3 ISCSI创建卷 简述 在Windows Server系统的各个版本中 xff0c 有5种卷类型 xff
  • Windows Server 2016 域控管理服务的安装

    目录 1 克隆虚拟机 2 安装域服务 3 客户机加入域 4 图形化创建OU xff08 组织单位 xff09 5 命令行添加组 6 脚本添加用户 今天要给大家介绍的Windows Server 下的域控管理服务的安装 什么事域控管理服务呢
  • Windows组策略管理

    组策略的管理一般是属于域的应用 xff0c 组策略有什么作用呢 xff1f 组策略可以在域控环境中 xff0c 实现用户以及计算机的统一行为策略管理 xff0c 比如 xff0c 统一大家的桌面背景 xff0c 统一主题样式 xff0c 统
  • Windows Server 2016 DFS的应用步骤

    目录 介绍 任务目标 xff1a 准备工作 1 分别安装DFS复制和DFS命名空间 2 创建共享文件夹 3 创建命名空间服务器 4 创建复制文件夹 5 访问命名空间路径 6 创建卷影副本 介绍 DFS是一种共享资源的技术机制 xff0c 让
  • Windows Server 2016 DNS服务器的设置

    什么是DNS呢 xff1f DNS的全称是Domain Name System xff0c 在计算机网络中 xff0c 主机与主机之间的通信主要是通过IP地址进行通信的 xff0c 但是IP地址对于我们人类来说记忆难度比较大 xff0c 为
  • 《Java并发编程实战》中关于allowCoreThreadTimeOut描述的个人见解

    最近在看 Java并发编程实战 这本书 xff0c 的确有很大的收获 看到8 3 1节关于线程的创建与销毁时 xff0c 底下的注释提到了ThreadPoolExecutor中allowCoreThreadTimeOut的用法 我认为表述有