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


本文講一下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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM