0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CallerRunsPolicy拒绝策略的相关知识

Android编程精选 来源:CSDN博客 作者:打不死Gin 2021-09-29 14:20 次阅读

来源丨blog.csdn.net/dabusiGin/article/details/105323796

在学习CallerRunsPolicy拒绝策略的时候,搜索了很多相关的知识,其他博主的描述是这样的:

第1种:

d023ed82-205b-11ec-82a8-dac502259ad0.png

第2种:

d03abec2-205b-11ec-82a8-dac502259ad0.png

第3种:

d04cab5a-205b-11ec-82a8-dac502259ad0.png

第4种:JDK文档(汉化版)

d09a2506-205b-11ec-82a8-dac502259ad0.png

他们的描述让我看的很懵逼,特别是第3种,仔细看他的测试代码,并没有用CallerRunsPolicy,而是用的AbortPolicy拒绝策略。。。。这是一篇高浏览量的博文,而且多人转载。

其中上面几种情况中写到的“execute方法的调用线程”、“调用者线程”、“execute函数的上层线程”、“execute本身的线程”就是指的主线程,举个例子如下图所示,主线程就是平时执行main方法中代码的线程。

d0b15028-205b-11ec-82a8-dac502259ad0.png

再通过一个例子详细说明:

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文档才会说:“这提供了一个简单的反馈控制机制,将降低新任务提交的速度”。

d0fc715c-205b-11ec-82a8-dac502259ad0.png

我的一点个人理解,希望能有助理解。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理程序
    +关注

    关注

    0

    文章

    3

    浏览量

    5435
  • 线程池
    +关注

    关注

    0

    文章

    57

    浏览量

    6836

原文标题:大多数人不知道的:线程池CallerRunsPolicy()拒绝策略

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一文解析半导体产业链条以及相关知识

    先来了解一下半导体产业链条以及相关知识,看完传统封装与先进封装对比后再来了解封装装备,最后看看核心封装设备的梳理。 下图为工艺对比                                                                      
    的头像 发表于 11-18 11:23 193次阅读
    一文解析半导体产业链条以及<b class='flag-5'>相关</b><b class='flag-5'>知识</b>

    接口测试理论、疑问收录与扩展相关知识

    本文章使用王者荣耀游戏接口、企业微信接口的展示结合理论知识,讲解什么是接口测试、接口测试理论、疑问收录与扩展相关知识点的知识学院,快来一起看看吧~
    的头像 发表于 11-15 09:12 214次阅读
    接口测试理论、疑问收录与扩展<b class='flag-5'>相关</b><b class='flag-5'>知识</b>点

    连接器相关基础知识大讲解

    最近很多读者想要补补连接器相关知识,今天小编就和大家来探讨下连接器的相关知识。 以下和大家来了连接器基础知识,将从六个方面和大家分享,想了
    的头像 发表于 11-01 11:03 210次阅读

    【技术分享】CAN总线相关知识探讨以及Model3C两路CAN的应用

    CAN总线相关知识,以个位数价格的工业级HMI芯片–Model3C为例, 2路CAN的应用
    的头像 发表于 09-05 10:59 479次阅读
    【技术分享】CAN总线<b class='flag-5'>相关</b><b class='flag-5'>知识</b>探讨以及Model3C两路CAN的应用

    LDO输出电压纹波的相关知识

    统中,电源的稳定性和可靠性至关重要。线性稳压器(LDO)作为一种常用的电源管理器件,其输出电压纹波是衡量其性能的重要指标之一。本文将详细介绍LDO输出电压纹波的相关知识,包括其定义、影响因素、测量方法以及降低纹波的策略。 LDO
    的头像 发表于 07-14 10:08 1573次阅读

    什么是手机信号屏蔽器? 手机信号屏蔽器:保护隐私,拒绝干扰

    手机信号屏蔽器:保护隐私,拒绝干扰,助力专注
    的头像 发表于 03-12 09:07 3256次阅读
    什么是手机信号屏蔽器? 手机信号屏蔽器:保护隐私,<b class='flag-5'>拒绝</b>干扰

    Meta拒绝谷歌合作提议

    近日,科技巨头Meta拒绝与谷歌母公司Alphabet进行合作,原本的计划是将Meta的混合现实头显产品Quest搭载谷歌的Android XR平台。然而,尽管Meta作出了这一决定,谷歌方面依然保持开放态度,显示出其在市场竞争中的灵活策略
    的头像 发表于 03-06 10:27 658次阅读

    Meta拒绝和谷歌在VR/AR领域合作提议

    Meta拒绝和谷歌在VR/AR领域合作提议 据外媒报道,Meta拒绝和谷歌在VR/AR领域合作的提议。 谷歌原本希望通过合作促成混合现实头显产品Quest 搭载谷歌Android XR 平台。但是 Meta CEO扎克伯格似乎有自己的想法,难道元宇宙平台依然是扎克伯格的执
    的头像 发表于 03-02 15:48 3016次阅读

    美国拒绝OpenAI商标申请

    美国专利商标局(PTO)再次拒绝了OpenAI将其核心术语“GPT”注册为商标的请求。PTO认为,GPT(生成式预训练转换器)作为一个术语过于通用,如果允许OpenAI独家使用,可能会妨碍竞争对手描述自己的产品为GPT。
    的头像 发表于 02-18 10:19 594次阅读

    母线保护相关知识分享

    母线保护相关知识分享
    的头像 发表于 01-19 10:29 528次阅读
    母线保护<b class='flag-5'>相关</b><b class='flag-5'>知识</b>分享

    Spring事务传播性的相关知识

    本文主要介绍了Spring事务传播性的相关知识
    的头像 发表于 01-10 09:29 409次阅读
    Spring事务传播性的<b class='flag-5'>相关</b><b class='flag-5'>知识</b>

    交换机、路由器接口、线缆的相关知识

    今天浩道跟大家分享网络维护中常见的交换机、路由器接口、线缆相关知识,作为一名合格的网工,你应该对这些了如指掌!
    的头像 发表于 12-28 09:19 635次阅读
    交换机、路由器接口、线缆的<b class='flag-5'>相关</b><b class='flag-5'>知识</b>

    印制电路板相关知识科普

    印制电路技术基础知识介绍
    的头像 发表于 12-06 10:44 574次阅读
    印制电路板<b class='flag-5'>相关</b><b class='flag-5'>知识</b>科普

    PCB板相关知识科普

    我们还应该注意电路组件内的电流流向。有电路知识我们知道,电流从电压高的地方流向低的地方,并且电流总是通过一条或更多条路径在一个闭环电路中流动,因此一个回路和一个很重要的定律。
    发表于 12-05 14:36 283次阅读

    中断相关知识

    中断相关概念知识以及中断函数的运用
    发表于 12-04 23:17