来源丨blog.csdn.net/dabusigin/article/details/105323796
在学习callerrunspolicy拒绝策略的时候,搜索了很多相关的知识,其他博主的描述是这样的:
第1种:
第2种:
第3种:
第4种:jdk文档(汉化版)
他们的描述让我看的很懵逼,特别是第3种,仔细看他的测试代码,并没有用callerrunspolicy,而是用的abortpolicy拒绝策略。。。。这是一篇高浏览量的博文,而且多人转载。
其中上面几种情况中写到的“execute方法的调用线程”、“调用者线程”、“execute函数的上层线程”、“execute本身的线程”就是指的主线程,举个例子如下图所示,主线程就是平时执行main方法中代码的线程。
再通过一个例子详细说明:
class mytask implements runnable {
private string id;
public mytask(string id) {
this.id = id;
}
public void run() {
system.out.println(id);
}
}
public class rejectpolicy {
public static void main(string[] args) {
executorservice es = new threadpoolexecutor(2, 2, 0l, timeunit.milliseconds,
new arrayblockingqueue《runnable》(3), executors.defaultthreadfactory(),
new threadpoolexecutor.callerrunspolicy());
mytask t1 = new mytask(“id:1”);
mytask t2 = new mytask(“id:2”);
mytask t3 = new mytask(“id:3”);
mytask t4 = new mytask(“id:4”);
mytask t5 = new mytask(“id:5”);
mytask t6 = new mytask(“id:6”);
mytask t7 = new mytask(“id:7”);
es.execute(t1);
es.execute(t2);
es.execute(t3);
es.execute(t4);
es.execute(t5);
es.execute(t6);
es.execute(t7);
}
}
这里使用主要参数是:核心线程数为2、最大线程数为2、有界队列(容量为3)、默认线程工厂、callerrunspolicy拒绝策略。
运行结果如下:
id:1
id:2
id:3
id:4
id:6
id:5
id:7
可以看到所有的任务都执行了,没有真正意义上被拒绝的。
学习资料:java进阶视频资源
代码中定义了核心线程数为2的线程池,一共有7个任务要执行,其中2个任务创建线程执行去了,3个任务放入了任务队列(workqueue)。
当提交到第6个任务的时候,会触发拒绝策略,在这里我们配置了callerrunspolicy策略,主线程直接执行第六个任务去了,不再向下执行main方法中的es.execute(t7)这段代码。
也就是说,在本程序中最多会有3个任务在执行,3个在等待。由此限制了线程池的等待任务数与执行线程数。所以jdk文档才会说:“这提供了一个简单的反馈控制机制,将降低新任务提交的速度”。
我的一点个人理解,希望能有助理解。
直线电机激光打标帮你解决茶杯花纹掉色问题
LEM国产替代|芯森高精度磁通门电流传感器在BMS中的应用
对话FF91副总裁 2018年肯定会交付
Innodisk与Avalue合作,将AIoT带入台北市
回顾18年AI大赛的内容和介绍
CallerRunsPolicy拒绝策略的相关知识
ESD断路过压保护,ESD产生的高压和高峰值电流会损坏IC
工业5G+边缘计算在电子行业的应用
基于USB2.0与FPGA技术的高速数据采集系统的设计
M16公母插座8芯航空插头
大众CEO马蒂亚斯·穆勒开怼特斯拉,称只会烧钱和裁员毫无社会责任!
电脑硬件的故障问题
四维图新助力华为自动驾驶验证,为华为定制高精度地图数据
半导体与电子制造业技术专家共绘未来发展蓝图
干货|虹科KPA MoDK运行环境与搭建步骤(2)——MoDK运行环境搭建
ASML今年将出货交付40台EUV光刻机
Tensilica授权瑞萨电子ConnX BBE16 DSP IP核,用于数字基带信号处理
LCD液晶段码屏显示驱动IC VK1072少脚位/小体积封装 FAE支持
中国电信正式公布了2020年2月运营数据
华为手机再次强势登顶!最值得买的产品竟是华为Mate9、荣耀V9、华为Nova青春版