Java實現(xiàn)threadLocal線程池獲取
問題:
ThreadLocal默認不支持子線程獲取,而InheritableThreadLocal支持子線程獲取threadLocal值,但是如果使用線程池,核心個數(shù)為1則子線程會獲取到上一個threadLocal的值。
解決:
1.引入transmittable-thread-local jar
<dependency> <groupId>com.alibaba</groupId> <artifactId>transmittable-thread-local</artifactId> <version>2.11.4</version> </dependency>
2. threadLocal 初始化
private static final TransmittableThreadLocal<User> CURRENT_USER_HOLDER = new TransmittableThreadLocal();
3. Executor bean,使用TtlExecutor
@Bean(value = "defaultThreadPool") public Executor buildQueueThreadPool() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); int cpuNum = Runtime.getRuntime().availableProcessors(); // 設(shè)置核心線程數(shù) executor.setCorePoolSize(Math.min(cpuNum * 2, 16)); // 設(shè)置最大線程數(shù) executor.setMaxPoolSize(cpuNum * 2); //隊列中最大的數(shù)目 executor.setQueueCapacity(300); //線程名稱前綴 executor.setThreadNamePrefix("defaultThreadPool_"); //rejection-policy:當pool已經(jīng)達到max size的時候,如何處理新任務(wù) //CALLER_RUNS:不在新線程中執(zhí)行任務(wù),而是由調(diào)用者所在的線程來執(zhí)行 //對拒絕task的處理策略 executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); //線程空閑后的最大存活時間 executor.setKeepAliveSeconds(60); //加載 executor.initialize(); return TtlExecutors.getTtlExecutor(executor); }
到此這篇關(guān)于Java實現(xiàn)threadLocal線程池獲取的文章就介紹到這了,更多相關(guān)Java threadLocal線程池內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringCloud使用FFmpeg對視頻壓縮處理的代碼示例
在現(xiàn)代的視頻處理系統(tǒng)中,壓縮視頻以減小存儲空間、加快傳輸速度是一項非常重要的任務(wù),FFmpeg作為一個強大的開源工具,廣泛應(yīng)用于音視頻的處理,包括視頻的壓縮和格式轉(zhuǎn)換等,本文將通過Java代碼示例,向您展示如何使用FFmpeg進行視頻壓縮,并介紹相關(guān)參數(shù)的設(shè)置2024-11-11Spring MVC 學習 之 - URL參數(shù)傳遞詳解
本篇文章主要介紹了SpringMVC-URL參數(shù)傳遞,在學習 Spring Mvc 過程中,有必要來先了解幾個關(guān)鍵參數(shù),有興趣的可以了解一下。2017-01-01SpringBoot靜態(tài)資源與首頁配置實現(xiàn)原理深入分析
最近在做SpringBoot項目的時候遇到了“白頁”問題,通過查資料對SpringBoot訪問靜態(tài)資源做了總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-10-10SpringMVC 重新定向redirect請求中攜帶數(shù)據(jù)方式
這篇文章主要介紹了SpringMVC 重新定向redirect請求中攜帶數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12基于Spring框架由ConditionalOnMissingBean注解引發(fā)的問題
這篇文章主要介紹了基于Spring框架由ConditionalOnMissingBean注解引發(fā)的問題,具有很好2023-11-11Java Kafka分區(qū)發(fā)送及消費實戰(zhàn)
本文主要介紹了Kafka分區(qū)發(fā)送及消費實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07