Java線程池中三種方式創建 ThreadFactory 設置線程名稱

本文講一下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),springThreadFactory);
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),springThreadFactory);
exec.submit(() -> {
	logger.info("--記憶中的顏色是什麼顏色---");
});

總結

最終本質都是 給 java.lang.Thread#name 設置名稱,詳情源碼感興趣的可以自行查看。

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

本文完~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章