Java线程池中三种方式创建 ThreadFactory 设置线程名称

本文讲一下Java线程池中创建 ThreadFactory 设置线程名称的三种方式。看代码即可。文章目录第一种 CustomizableThreadFactory第二种 ThreadFactoryBuilder第三种 BasicThreadFactory总结第一种 CustomizableThreadFactorySpring 框架提供的 CustomizableThreadFactory。ThreadFactory springThreadFactory = new CustomizableTh

大家好,又见面了,我是全栈君。

本文讲一下Java线程池中创建 ThreadFactory 设置线程名称的三种方式。设置线程名称是很重要的,如果你没有设置过,说明你还“涩世”不深,这里面的坑还不曾踩过,而我 在坑里进去然后坑里出来,被坑的那是一个相当的爽啊~

为了让不重蹈我的覆辙,为了未来不说起来都是满眼含着“热泪”,还是看下如何设置,顺便也设置设置。

概览

第一种 CustomizableThreadFactory

Spring 框架提供的 CustomizableThreadFactory

ThreadFactory springThreadFactory = new CustomizableThreadFactory("springThread-pool-");
	

ExecutorService exec = new ThreadPoolExecutor(1, 1,
		0L, TimeUnit.MILLISECONDS,
		new LinkedBlockingQueue<Runnable>(10),springThreadFactory);
exec.submit(() -> {
	logger.info("--记忆中的颜色是什么颜色---");
});

第二种 ThreadFactoryBuilder

Google guava 工具类 提供的 ThreadFactoryBuilder ,使用链式方法创建。

ThreadFactory guavaThreadFactory = new ThreadFactoryBuilder().setNameFormat("retryClient-pool-").build();


ExecutorService exec = new ThreadPoolExecutor(1, 1,
		0L, TimeUnit.MILLISECONDS,
		new LinkedBlockingQueue<Runnable>(10),guavaThreadFactory );
exec.submit(() -> {
	logger.info("--记忆中的颜色是什么颜色---");
});

第三种 BasicThreadFactory

Apache commons-lang3 提供的 BasicThreadFactory.

ThreadFactory basicThreadFactory = new BasicThreadFactory.Builder()
		.namingPattern("basicThreadFactory-").build();

ExecutorService exec = new ThreadPoolExecutor(1, 1,
		0L, TimeUnit.MILLISECONDS,
		new LinkedBlockingQueue<Runnable>(10),basicThreadFactory );
exec.submit(() -> {
	logger.info("--记忆中的颜色是什么颜色---");
});

总结

最终本质都是 给 java.lang.Thread#name 设置名称,详情源码感兴趣的可以自行查看。

final Thread thread = new Thread();
thread.setName(name);

本文完~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120974.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ScheduledExecutorService

    ScheduledExecutorService任务调度(三)——Timer的替代品ScheduledExecutorService简介标签:任务调度TimerScheduledExecutorSer2015-08-0619:075704人阅读评论(2)收藏举报分类:【定时任务分时器】(3)作者同类文章X【java基础】(29)

    2022年5月5日
    44
  • 强化学习——Q学习算法「建议收藏」

    强化学习——Q学习算法「建议收藏」强化学习的一些相关概念智能体(Agent):智能体对环境进行观察,决策出行动,获得一个从环境返回的奖励决策(Decision):意识层面的行动(Action,a):物质层面的环境(Environment):与智能体交互的对象状态(State,s):是历史信息的函数,包含所有已有的信息。奖励(Reward,R):是智能体采取行动后环境的一个反馈策略(Policy):是状态到动作的函数价值函数(Valuefunction):是评价状态的一个指标模型(Model):是个体对环境的建模

    2022年10月3日
    0
  • 如何安装Java?

    如何安装Java?在本文中,我们将研究如何安装Java,在Windows操作系统中安装Java,如何检查已安装的版本以及设置环境变量。因此,让我们开始吧。如何安装Java?Java支持许多平台,例如Windows,Linux,Solaris等。这些平台具有自己的安装方法。在本教程中,我们将介绍32位和64位OS的安装过程Windows操作系统。Windows操作系统中的Java安装在Windows操作系统中,32位和64位Windows操作系统都具有类似的Java安装方式。主要区别在于它们的安装软件包。如何检查主机

    2022年7月9日
    20
  • Visio 2013 Professional专业版密钥

    Visio 2013 Professional专业版密钥Visio2013产品密钥分享,在安装时可以使用以下密钥:C2FG9-N6J68-H8BTJ-BW3QX-RM3B32NYF6-QG2CY-9F8XC-GWMBW-29VV8FJ2N7-W8TXC-JB8KB-DCQ7Q-7T7V3VXX6C-DN3HQ-3CRXG-RF4KT-YG7V3B3C7Q-D6NH2-2VRFW-HHWDG-FVQB6TCWJK-N6GFH-8…

    2022年6月24日
    74
  • iReport 设计介绍「建议收藏」

    iReport 设计介绍「建议收藏」目录iReport用户手册………………………………………………………………………………………………1iReport用户手册-介绍………………………………………………..

    2022年9月10日
    0
  • mysql groupadd_Linux下groupadd命令无法添加用户和组的解决

    mysql groupadd_Linux下groupadd命令无法添加用户和组的解决今天需要给一个linux服务器安装mysql,在安装mysql的时候,出现错误提示:[root@localhostsoftwaretools]#rpm-ivhMySQL-server-5.5.23-1.rhel5.x86_64.rpmPreparing…###########################################[100%]1…

    2025年7月6日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号