本文講一下Java線程池中創建 ThreadFactory 設置線程名稱的三種方式。設置線程名稱是很重要的,如果你沒有設置過,說明你還“澀世”不深,這里面的坑還不曾踩過,而我 在坑里進去然后坑里出來,被坑的那是一個相當的爽啊~
為了讓不重蹈我的覆轍,為了未來不說起來都是滿眼含着“熱淚”,還是看下如何設置,順便也設置設置。
文章目錄
第一種 CustomizableThreadFactory
第二種 ThreadFactoryBuilder
第三種 BasicThreadFactory
總結
概覽
第一種 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://blog.csdn.net/u010648555/article/details/106137206/