如何进行ThreadPoolExecutor的keepAliveTime=0说明
发表于:2024-10-25 作者:千家信息网编辑
千家信息网最后更新 2024年10月25日,如何进行ThreadPoolExecutor的keepAliveTime=0说明,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。解释
千家信息网最后更新 2024年10月25日如何进行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安全错误
数据库的锁怎样保障安全
网络安全自查问题整改报告
ip网络技术课后习题答案
著作权中作品数据库
网络安全良好实践
数据库连接测试sql
计算机网络技术与应用考题
vs向数据库添加数据库
专业版服务器怎么进入安全模式
服务器需要装nodejs吗
溯源软件开发合同
dnfpk服务器
软件开发小白怎么找工作
数据库事件是指什么
衢州java软件开发工程师
客户化开发和软件开发区别
黄浦区服务器回收推荐厂家
沈阳工学院计算机网络技术代号
ftl模板数据库参数
服务器设置方法
县一级网络安全工作
北京市威海软件开发
系统维护属于软件开发阶段吗
数据库ng是什么意思
本地访问远程服务器
数据库版权
苏州优力服务器空调诚信企业推荐
互联网金融与科技金融创新模式
red数据库
软件开发计划书后续测试
c 获取数据库行数