3

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

 3 years ago
source link: https://club.perfma.com/article/2361557
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Java线程池中三种方式创建 ThreadFactory 设置线程名称
文章>Java线程池中三种方式创建 ThreadFactory 设置线程名称

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

阿飞云2天前

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

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

第一种 CustomizableThreadFactory
第二种 ThreadFactoryBuilder
第三种 BasicThreadFactory
总结

image.png

第一种 CustomizableThreadFactory
Spring 框架提供的 CustomizableThreadFactory。

	

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);

本文分享到此结束,欢迎积极留言哦~

1人觉得很赞
1004 阅读

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK