线程池四种拒绝机制 实现 及执行日志

news2024/12/23 23:53:19

目录

目录

目录

创建线程池

测试代码

运行线程

全量代码

日志

AbortPolicy 报出异常模式

DiscardPolicy 放弃机制啥也不处理

DiscardOldestPolicy 放弃机制,放弃列队最早进入的

CallerRunsPolicy 交给主线程执行


创建线程池

    public static ExecutorService executor = new ThreadPoolExecutor(2,
            2, 60L, TimeUnit.SECONDS,
            new LinkedBlockingQueue<Runnable>(3), Executors.defaultThreadFactory(),
//            new ThreadPoolExecutor.AbortPolicy()
//     new ThreadPoolExecutor.DiscardPolicy()
            new ThreadPoolExecutor.DiscardOldestPolicy()
//            new ThreadPoolExecutor.CallerRunsPolicy()
    );

测试代码

 @Test
    public void t1() throws InterruptedException {
        for (int i = 0; i < 9; i++) {
            String finalI = i+"";
            try {
                ex(finalI);
            }catch (RejectedExecutionException e){
                System.out.println(finalI+" error = "+e);
                Thread.sleep(2);
                ex(finalI+" 重新执行");
            }

        }
        Thread.sleep(1000*5);
    }

运行线程

 public static void ex(String i) throws RejectedExecutionException{
        String finalI = i;
        executor.execute(new Runnable() {
            private String finalC = finalI;
            @Override
            public void run() {
//                System.out.println(Thread.currentThread().getName()+" == start =="+ finalC);
                try {
                    Thread.sleep(2);
                } catch (InterruptedException e) {
                    System.out.println("error = "+e);
                }
                System.out.println(Thread.currentThread().getName()+" == success =="+ finalC);
            }
        });
    }

全量代码


import org.junit.jupiter.api.Test;

import java.util.concurrent.*;

public class TeTh {
    public static ExecutorService executor = new ThreadPoolExecutor(2,
            2, 60L, TimeUnit.SECONDS,
            new LinkedBlockingQueue<Runnable>(3), Executors.defaultThreadFactory(),
//            new ThreadPoolExecutor.AbortPolicy()
//     new ThreadPoolExecutor.DiscardPolicy()
            new ThreadPoolExecutor.DiscardOldestPolicy()
//            new ThreadPoolExecutor.CallerRunsPolicy()
    );

    @Test
    public void t1() throws InterruptedException {
        for (int i = 0; i < 9; i++) {
            String finalI = i+"";
            try {
                ex(finalI);
            }catch (RejectedExecutionException e){
                System.out.println(finalI+" error = "+e);
                Thread.sleep(2);
                ex(finalI+" 重新执行");
            }

        }
        Thread.sleep(1000*5);
    }
    public static void ex(String i) throws RejectedExecutionException{
        String finalI = i;
        executor.execute(new Runnable() {
            private String finalC = finalI;
            @Override
            public void run() {
//                System.out.println(Thread.currentThread().getName()+" == start =="+ finalC);
                try {
                    Thread.sleep(2);
                } catch (InterruptedException e) {
                    System.out.println("error = "+e);
                }
                System.out.println(Thread.currentThread().getName()+" == success =="+ finalC);
            }
        });
    }
}

日志

AbortPolicy 报出异常模式

5 error = java.util.concurrent.RejectedExecutionException: Task org.cc.automaton.security.TeTh$1@172ed45 rejected from java.util.concurrent.ThreadPoolExecutor@79c292[Running, pool size = 2, active threads = 2, queued tasks = 3, completed tasks = 0]
pool-1-thread-2 == success ==1
pool-1-thread-1 == success ==0
7 error = java.util.concurrent.RejectedExecutionException: Task org.cc.automaton.security.TeTh$1@1574691 rejected from java.util.concurrent.ThreadPoolExecutor@79c292[Running, pool size = 2, active threads = 2, queued tasks = 3, completed tasks = 2]
pool-1-thread-2 == success ==2
pool-1-thread-1 == success ==3
pool-1-thread-2 == success ==4
pool-1-thread-1 == success ==5 重新执行
pool-1-thread-2 == success ==6
pool-1-thread-1 == success ==7 重新执行
pool-1-thread-2 == success ==8

DiscardPolicy 放弃机制啥也不处理

pool-1-thread-1 == success ==0
pool-1-thread-2 == success ==1
pool-1-thread-1 == success ==2
pool-1-thread-2 == success ==3
pool-1-thread-1 == success ==4
 

DiscardOldestPolicy 放弃机制,放弃列队最早进入的

pool-1-thread-1 == success ==0
pool-1-thread-2 == success ==1
pool-1-thread-1 == success ==6
pool-1-thread-2 == success ==7
pool-1-thread-1 == success ==8

CallerRunsPolicy 交给主线程执行

pool-1-thread-2 == success ==1
pool-1-thread-1 == success ==0
main == success ==5
pool-1-thread-1 == success ==3
main == success ==8
pool-1-thread-2 == success ==2
pool-1-thread-1 == success ==4
pool-1-thread-2 == success ==6
pool-1-thread-1 == success ==7
 

ok

持续更新 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/462480.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这篇文带你从入门级开始学习网络安全—认识网络安全

随着网络安全被列为国家安全战略的一部分&#xff0c;这个曾经细分的领域发展提速了不少&#xff0c;除了一些传统安全厂商以外&#xff0c;一些互联网大厂也都纷纷加码了在这一块的投入&#xff0c;随之而来的吸引了越来越多的新鲜血液不断涌入。不同于Java、C/C等后端开发岗位…

【Vue】Vue 前端设计模式梳理

文章目录 一、什么是设计模式&#xff1f;二、设计几个原则三、常见的设计模式及实际案例【1】单例模式1. 什么是单例模式&#xff1f;2.Vue中的单例模式 【2】工厂模式1. 什么是工厂模式&#xff1f;2.Vue中的工厂模式 【3】策略模式1. 什么是策略模式&#xff1f;2.策略模式的…

2023年6月CDGP数据治理专家认证报名及费用

目前6月DAMA-CDGP数据治理认证考试开放报名地区有&#xff1a;北京、上海、广州、深圳、长沙、呼和浩特。 目前南京、济南、西安、杭州等地区还在接近开考人数中&#xff0c;打算参加6月考试的朋友们可以抓紧时间报名啦&#xff01;&#xff01;&#xff01; DAMA认证为数据管…

密码基础知识(3)---对称密码体制

目录 一、对称密码概念 二、别名 三、对称密码体制的优缺点&#xff1a; 1、对称密码体制的缺点&#xff1a; 2、对称密码体制的优点&#xff1a; 四、对称密码的分类 1、序列密码 2、分组密码 五、分组密码的分组模式 1、ECB模式:Electronic CodeBook mode(电子密码…

Node【Node.js 20】新特性

文章目录 &#x1f31f;前言&#x1f31f;Node.js 20: 一次重要的升级和改进&#x1f31f;Internationalization API Update&#x1f31f;端口管理器&#x1f31f;字符串处理&#x1f31f; 更好的调试工具&#x1f31f; Crypto模块的更新&#x1f31f;总结&#x1f31f;写在最后…

【unity项目实战】3DRPG游戏开发05——动画、画质优化和shader的使用

摄像机跟随 摄像机跟随人物的方法有很多,其他方法可以看完另一篇文章 unity控制摄像机跟随玩家三种办法 添加虚拟相机 设置宽容度,相机跟随就会有一个缓慢的跟随效果 设置相机高度,也可以ctrl+shift+f修改相机位置 希望看的是人物的中心,可以在人物内新建一个空子节点…

【算法与数据结构】6 学会对算法进行性能测试

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于算法与数据结构体系专栏,本专栏对于0基础者极为友好,欢迎与我一起完成算法与数据结构的从0到1的跨越 算法性能测试 一、前情回顾二、算法性能测试1.生成测试用例2.使用测…

“递归三要素”寻踪(浅析递归“精典”框架,领略递归优雅秀气;看到有“递归算法优化”的操作,余试剖之)

浅析递归“精典”框架&#xff0c;领略递归优雅秀气。看到有“递归算法优化”的操作&#xff0c;余试剖之。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是…

界面交互篇:个人中心页布局样式与逻辑交互开发

微信小程序云开发实战系列-答题积分赛小程序 界面交互篇:个人中心页布局样式与逻辑交互开发 个人中心页效果图 个人中心布局与样式实现 页头布局 在my.wxml中,编写布局代码:

电视盒子什么牌子好?内行力荐五大目前最强的电视盒子

电视盒子什么牌子好是很多人在挑选电视盒子时会纠结的问题&#xff0c;因工作原因我每天都会接触到各种电视盒子&#xff0c;进行拆机维修。这几年发布过很多电视盒子的测评内容&#xff0c;今天我将要分享的是目前最强的电视盒子&#xff0c;对配置有要求的朋友们可以收藏起来…

Ahut周赛1

1.还原AhutOj 如图&#xff0c;位置1和2的最大值是3&#xff0c;位置1可以直接放3&#xff0c;同理&#xff0c;位置5可以直接放5 位置1和位置2的最大值是3&#xff0c;位置2和位置3的最大值是4&#xff0c;位置3和位置4的最大值是4&#xff0c;所以位置2只能取3和4的最小值&am…

学顶教育:注安工程师不同级别考试形式也不同?

注册安全工程师分为三个等级&#xff0c;即&#xff1a;初级&#xff08;助理&#xff09;、中级、高级。 其中&#xff0c;中级安全工程师报考者无需先参加初级考试&#xff0c;只要符合中级安全工程师要求即可直接报考。 不符合中级安全工程师注册条件且满足初级申请条件的&…

向量基础个人思维训练_纹理采样边缘做旧效果的推导

之前光照demo的玻璃盒子边缘感觉太锐利了&#xff0c;于是想看看能不能让面的边缘逐渐变黑&#xff0c;这样应该会更接近于真实的拼接效果。 首先&#xff0c;玻璃盒子每个面的纹理采样坐标设定如下&#xff1a; 已知采样坐标范围是(0,0)~(1,1)这个矩形范围&#xff0c…

【代理设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;用一个类来代理另一个类或几个类的功能。 在代理模式中&#xff0c;我们创建具有现有对象的对象&#xff0c;以便向外界提供功能接口。 延迟初始化&#xff08;虚拟代理&#xff09;。如…

Talk预告 | AAAI‘23 Oral 北京大学陈嘉毅:自然条件下基于三维点云的手物联合位姿追踪与重建

本期为TechBeat人工智能社区第488期线上Talk&#xff01; 北京时间4月6日(周四)20:00&#xff0c;北京大学计算机学院博士——陈嘉毅的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “自然条件下基于三维点云的手物联合位姿追踪与重建”&#xf…

iOS - 内存管理

一、App 内存分布 二、OC对象的内存管理 iOS 中&#xff0c;使用引用计数来管理 OC 对象的内存&#xff0c;新创建的 OC 对象引用计数默认是1&#xff0c;当引用计数减为0&#xff0c;OC对象就会销毁&#xff0c;释放其占用的内存空间。调用 retain 会让 OC 对象的引用计数 1&…

perf生成火焰图

文章目录 1&#xff0c;top发现webserver进程空转情况下CPU占用高达200%2&#xff0c;使用性能分析工具perf来进行分析2.1&#xff0c;抓取采集样本2.2&#xff0c;使用perf简单分析性能数据 3&#xff0c;火焰图3.1&#xff0c;生成火焰图3.2&#xff0c;将生成的.svg文件用浏…

电视盒子哪个好?数码小编盘点2023电视盒子排行榜

随着网络剧的热播&#xff0c;电视机又再度受宠&#xff0c;电视盒子也成为不可缺少的小家电。但面对复杂的参数和品牌型号&#xff0c;挑选时不知道电视盒子哪款最好&#xff0c;小编根据销量和用户评价整理半个月后盘点了电视盒子排行榜前五&#xff0c;对电视盒子哪个好感兴…

python编程课后练习答案:一批书几天能买完,勾股数组,个位数字与十位位数字之和除以10所得余数刚好是其百位,剪刀、石头、布猜拳游戏

一、编程题目 编程题目&#xff1a; 4、已知有一批书共1020本&#xff0c;以后每天都买掉一半还多2本&#xff0c;设计程序求出几天能买完。 5、凡是满足x^2y^2z^2的正整数数组(xYz)就称为勾股数组(如345)。请找出任意一个正整数n以内的所有勾股数组 6、编写代码找出满足下面…

不懂如何搭建Web自动化测试环境?这篇文章教你如何上手

摘要&#xff1a; 本文将介绍如何搭建Web自动化测试环境&#xff0c;使用的工具包括Selenium WebDriver和JUnit。同时&#xff0c;本文还提供了详细的代码示例&#xff0c;帮助读者更好地理解和实践相关的知识。 目录 一、前言 二、环境配置 1.安装JDK 2.安装Eclipse 3.下…