博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用ThreadPoolExecutor,当提交线程超过maximumPoolSize 会阻塞主线程吗?
阅读量:2022 次
发布时间:2019-04-28

本文共 1577 字,大约阅读时间需要 5 分钟。

今天开会同事说使用线程池,当提交的子线程超过运行的最大线程数,会阻塞主线程,然后我就回复 有拒绝策略,会抛出异常,同时也要确认当线程池满的时候executor.execute方法会不会是阻塞的了,其实内心是不认可这个观点的。不轻信别人,谨慎求证,直接上测试代码

import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class ThreadPoolTest {
public static void main(String[] args) { ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 200, TimeUnit.MILLISECONDS, new ArrayBlockingQueue
(5)); long a = 0; for(int i=0;i<500;i++){ MyTask myTask = new MyTask(i); try{ a= System.currentTimeMillis(); executor.execute(myTask); }catch (Exception e){ e.printStackTrace(); }finally { long b = System.currentTimeMillis()-a; System.out.println("线程提交时间间隔"+b); } } executor.shutdown(); } static class MyTask implements Runnable {
private int taskNum; public MyTask(int num) { this.taskNum = num; } @Override public void run() { System.out.println("正在执行task "+taskNum); try { Thread.currentThread().sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("task "+taskNum+"执行完毕"); } }}

上述代码配置线程运行最大线程数量是10,启动500个线程,测试当线程池满的情况下,根据领导的说法,会阻塞,因此我就在 executor.execute(myTask); 前后加上开始时间和结束时间,看看他们的执行时间,到底是多少。最后测试结果如下:

这里写图片描述

出现了很多线程被拒绝的异常,但是大部分情况都是0毫秒。所以阻塞主线程的说法是错误的。

你可能感兴趣的文章
直播预告:对话系统中的个性化回复生成与异常输入检测-3
查看>>
直播预告:KdConv: 知识驱动的中文多轮对话数据集 | AI TIME PhD 对话系统专题-4
查看>>
AI 3.0时代,情感计算的颠覆性力量
查看>>
直播预告:对神经网络对抗鲁棒性正则化的认识 | AI TIME PhD
查看>>
ACL 2020最佳论文:一种全新的NLP模型测试方法CheckList
查看>>
KDD 2020(一) | 可调控的多兴趣推荐框架(作者带你读论文)
查看>>
KDD 2020(二) | GCC:图上的Contrastive Coding(作者带你读论文)
查看>>
KDD 2020(三) | 从多个环境选择性偏差中学习稳定的图结构
查看>>
北京交通大学万怀宇:时空交通数据预测方法及应用
查看>>
直播预告:多领域端到端任务型对话系统研究分享 | AI TIME PhD对话系统专题第七期...
查看>>
让文创作品“活”起来、“火”起来,AI是否将颠覆新文创?
查看>>
利用自监督学习的放端故事生成评价方法
查看>>
哈尔滨工业大学博士覃立波:多领域端到端任务型对话系统研究分享
查看>>
倒计时2天-线下报名|论道火爆AI圈的GPT-3
查看>>
复旦大学傅金兰:中文分词是个已经解决的任务了吗?
查看>>
数据重生:让神经机器翻译中的不活跃样本“复活”
查看>>
NeurlPS 2020来啦!AI TIME PhD 顶会专场直播预告
查看>>
直播预告: NeurlPS 2020 专场二| AI TIME PhD
查看>>
清华大学王晓智:大规模通用域事件检测数据集MAVEN
查看>>
AI Open 专刊征稿|预训练语言模型
查看>>