ThreadLocal:session
線程的一個本地化對象。當多線程中的對象使用ThreadLocal維護變量是,ThreadLocal爲每一個使用該變量的線程分配一個獨立的變量副本。多線程
threadlocal一般定義爲靜態變量線程
工做原理:設計
內部維護一個ThreadLocalMap,每次set數據時是用ThreadLocal自己做爲Key對象
常見使用場景:生命週期
1.session 管理rem
常見的坑:io
1.ThreadLocal是與線程綁定的一個變量,假設沒有將ThreadLocal內的變量刪除(remove)或替換,它的生命週期將會與線程共存,假如咱們使用的是線程池,會致使下一個線程獲取到垃圾數據thread
解決方案:從設計的角度要讓ThreadLocal的set、remove善始善終,一般在外部調用的代碼中使用finally來remove數據變量