本文講一下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);
本文完~
————————————————
版權聲明:本文為CSDN博主「阿飛雲」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u010648555/article/details/106137206