如何进行ThreadPoolExecutor的keepAliveTime=0说明
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,如何进行ThreadPoolExecutor的keepAliveTime=0说明,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。解释
千家信息网最后更新 2025年01月23日如何进行ThreadPoolExecutor的keepAliveTime=0说明
解释 ThreadPoolExecutor的keepAliveTime=0 。
如何进行ThreadPoolExecutor的keepAliveTime=0说明,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
上图来自《并发编程的艺术》一书,书中有下面一段描述:
""当线程池中的线程数大于corePoolSize时,keepAliveTime 为多余的空闲线程等待新任务的最长时间, 超过这个时间后多余的线程将被终止。这里把keepAliveTime设置为0L,意味着多余 的空闲线程会被立即终止。"
网上很多资料都是说的0表示在空闲的时候线程永久存活。其实是不准确的。
附上验证代码:
public static void main(String[] args) throws InterruptedException {
// 创建了一个线程池
ThreadPoolExecutor executor = new ThreadPoolExecutor(1,
2,
0, TimeUnit.SECONDS,
new LinkedBlockingQueue(1));
for (int i = 0; i < 3; i++) {
executor.execute(new DemoTask(i));
}
while (true) {
System.out.println("总线程数:" + executor.getPoolSize() + ", 当前活跃线程数:" + executor.getActiveCount());
TimeUnit.SECONDS.sleep(1);
}
}
static class DemoTask implements Runnable {
int num;
public DemoTask(int i) {
this.num = i;
}
@Override
public void run() {
System.out.println("num=" + num + " Thread = " + Thread.currentThread().getName());
if (num >= 1) {
try {
TimeUnit.SECONDS.sleep(1);
System.out.println("num=" + num + " sleep 1 s结束");
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
try {
TimeUnit.SECONDS.sleep(3);
System.out.println("num=" + num + " sleep 3 s结束");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
打印结果:
num=2 Thread = pool-1-thread-2
总线程数:2, 当前活跃线程数:2
num=0 Thread = pool-1-thread-1
num=2 sleep 1 s结束
num=1 Thread = pool-1-thread-2
总线程数:2, 当前活跃线程数:2
num=1 sleep 1 s结束
总线程数:1, 当前活跃线程数:1
num=0 sleep 3 s结束
总线程数:1, 当前活跃线程数:1
总线程数:1, 当前活跃线程数:0
总线程数:1, 当前活跃线程数:0
关于如何进行ThreadPoolExecutor的keepAliveTime=0说明问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
线程
空闲
问题
时间
更多
帮助
解答
易行
最长
简单易行
一书
上图
代码
任务
内容
小伙
小伙伴
意味
方法
时候
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
履行网络安全监督管理职责
mysql服务器备份恢复时间
电信网络安全手抄报4k纸
极速世界有多少个服务器
网络安全能力专题汇报
怎么关闭云服务器ip
北京crm软件开发流程
h3c服务器管理对外端口吗
搭建灾备数据库同步dg
利用网络技术进行教研活动
安全教育主题网络安全
立言软件开发
2016服务器系统更新
欧盟网络安全战略是哪一年
安徽软件开发工资标准
厂家信誉好的重庆移动服务器托管
广东 网络安全 团队
软件开发的基本知识有哪些
数据库查询怎么只显示数据条
计算机网络技术专业考研
数据库被锁表解锁方法
本地视频管理服务器
普通电脑能当oa系统服务器吗
无锡信息软件开发系统
web 3d软件开发
linux 服务器认证管理
ff14 人最多的服务器
南京大学图书馆核心数据库
联通服务器如何调信号
大数据存储服务器排名