前言

在上一篇文章中,我们简单介绍了一下《ThreadPoolExecutor构造方法参数含义》。
在实际开发场景中,我们推荐为每一个自定义的线程池都设置不同的线程名前缀,方便后续问题的处理。
整体的思路也比较简单:
1.创建一个ThreadFactory实现类,NamedThreadFactory;
2.创建NamedThreadFactory对象的时候,设置好线程名前缀;
3.执行newThread方法时,拼接线程名前缀;

代码示例

自定义线程工厂 - NamedThreadFactory
package cn.mrxionge.idemo;import org.jetbrains.annotations.NotNull;import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;/*** 带有前缀名称的线程工厂*/
public class NamedThreadFactory implements ThreadFactory {/*** 线程名前缀*/private final String prefix;/*** 线程编号*/private final AtomicInteger threadNumber = new AtomicInteger(1);/*** 创建线程工厂** @param prefix 线程名前缀*/public NamedThreadFactory(String prefix) {this.prefix = prefix;}@Overridepublic Thread newThread(@NotNull Runnable r) {return new Thread(null, r, prefix + threadNumber.getAndIncrement());}
}
测试方法(伪代码)
ThreadPoolExecutor executor = new ThreadPoolExecutor(50, 100, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(100), new NamedThreadFactory("async-task-pool-"), new ThreadPoolExecutor.AbortPolicy());
for (int i = 0; i < 100; i++) {executor.execute(() -> log.debug("执行中 >>>"));
}
执行结果
2022-06-09 18:24:17.531 [async-task-pool-1] DEBUG c.m.idemo.ThreadPoolTest - 执行中 >>>
2022-06-09 18:24:17.531 [async-task-pool-2] DEBUG c.m.idemo.ThreadPoolTest - 执行中 >>>
2022-06-09 18:24:17.531 [async-task-pool-3] DEBUG c.m.idemo.ThreadPoolTest - 执行中 >>>
2022-06-09 18:24:17.531 [async-task-pool-4] DEBUG c.m.idemo.ThreadPoolTest - 执行中 >>>
...
...

【笔记】ThreadFactory自定义线程名前缀相关推荐

  1. @Async 异步任务自定义线程池的配置方法和 @Scheduled 定时任务自定义线程池的配置方式

    文章目录 一.定时和异步业务场景描述 二.定时调度任务的实现方式 三.定时调度任务的问题描述 四.定时调度多线程解决方案(方案一) 五.异步多线程程序实现方式 六.定时调度多线程解决方案(方案二) 一 ...

  2. 13、Excutors 结合 ThreadFactory 自动给线程加上线程名

    2019独角兽企业重金招聘Python工程师标准>>> 1.需求场景 很多时候我们都会使用线程池,而且是使用多个线程池,比如在:生产者和消费者模型中,生产者线程放到一个线程池里面,而 ...

  3. Spring Boot使用@Async实现异步调用:自定义线程池

    在之前的Spring Boot基础教程系列中,已经通过<Spring Boot中使用@Async实现异步调用>一文介绍过如何使用 @Async注解来实现异步调用了.但是,对于这些异步执行的 ...

  4. SpringBoot 自定义线程池

    文章目录 一.自定义线程池 1. yml配置 2. 线程池配置属性类 3. 开启异步线程支持 4. 创建自定义线程池配置类 5. service逻辑层 6. controller控制层 7. 效果图 ...

  5. android开发笔记之自定义开关按钮

    今天来讲讲自定义单个控件,就拿开关按钮来讲讲,相信大家见了非常多这样的了,先看看效果: 我们可以看到一个很常见的开关按钮,那就来分析分析. 首先: 这是由两张图片构成: ①一张为有开和关的背景图片 ② ...

  6. 一文搞懂Java自定义线程池参数

    背景: 线程是一个开发经常使用的东西,但是实际工作中很少有新建一个线程去执行任务,线程的创建和销毁都会耗费资源,我们一般都会用线程池来完成线程的创建和销毁. 多说一句 JDK自带的线程池不建议大家去使 ...

  7. android自定义线程池工具类,妈妈再也不用担心你不会使用线程池了(ThreadUtils)...

    为什么要用线程池 使用线程池管理线程有如下优点:降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗. 提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行. 提高线程的可 ...

  8. Java 自定义线程池

    Java 自定义线程池 https://www.cnblogs.com/yaoxiaowen/p/6576898.html public ThreadPoolExecutor(int corePool ...

  9. 【Java 并发编程】线程池机制 ( 线程池阻塞队列 | 线程池拒绝策略 | 使用 ThreadPoolExecutor 自定义线程池参数 )

    文章目录 一.线程池阻塞队列 二.拒绝策略 三.使用 ThreadPoolExecutor 自定义线程池参数 一.线程池阻塞队列 线程池阻塞队列是线程池创建的第 555 个参数 : BlockingQ ...

  10. 【Android 异步操作】线程池 ( 线程池使用示例 | 自定义线程池使用流程 | 自定义任务拒绝处理策略 | 完整代码示例 )

    文章目录 一.自定义线程池使用流程 二.自定义任务拒绝处理策略 三.完整代码示例 在博客 [Android 异步操作]线程池 ( 线程池简介 | 线程池初始化方法 | 线程池种类 | AsyncTas ...

最新文章

  1. 孙立岩 python-basic: 用于学习python基础的课件(五六七八九十)
  2. 淘宝特价版给拼多多送芒果,网友:这是什么操作?
  3. 用AjaxPro实现无刷新翻页效果及数据库分页技术介绍
  4. 由数字、26个英文字母、下划线或汉字的正则表达式
  5. vue 将字符串最后一个字符给替换_一步一步的实现Vue(一)
  6. 7-28晚复习 虚继承与地址分配
  7. 音视频之使用sonic.cpp实现音频倍速播放功能
  8. 设置maven 参数调休_IDEA 使用 Maven构建Spark项目
  9. cpprestsdk编译安装linux,使用C++ REST SDK开发简单的Web(HTTP)服务
  10. 【CV竞赛】百度车道线检测,正在报名中,8.9万元奖金
  11. 苹果任命软件主管凯文•林奇为“苹果汽车”项目负责人
  12. 终于知道为什么NVIDIA的linux驱动这么烂了,一波官方文档告诉你:Linux GPU Driver Developer’s Guide
  13. jquery noConflict() 兼容其他框架同时用$
  14. SaaS服务应用集成和生态该何去何从
  15. 手机上日程应该怎么设置提醒
  16. Cython优化简介
  17. 【agora】 Agora Media SDK : aut transport
  18. 高德地图:创建多个覆盖区域
  19. 我的2011--虚荣、挣扎、总结和转变的一年
  20. 微信图片过期怎么办?如何查看微信过期图片?3步即可

热门文章

  1. 阿里巴巴矢量图标引用问题
  2. 聚宽API获取沪深300股票
  3. ajax json destoon,destoon框架中的微信自动登陆
  4. Wireshark实验
  5. nuc10黑苹果无法wifi上网
  6. aws----文件存储efs的全面了解
  7. java2048朝代版代码_2048朝代版完整版
  8. 计算机专业的就业现状论文,计算机专业就业困境初探论文
  9. android 连笔记本无线上网,android手机通过笔记本的网络实现无线wifi上网
  10. 帝国cms 制作网站地图