ThreadLocal概述、以及存在的坑

  ThreadLocal:session

    線程的一個本地化對象。當多線程中的對象使用ThreadLocal維護變量是,ThreadLocal爲每一個使用該變量的線程分配一個獨立的變量副本。多線程

    threadlocal一般定義爲靜態變量線程

工做原理:設計

  內部維護一個ThreadLocalMap,每次set數據時是用ThreadLocal自己做爲Key對象

 

常見使用場景:生命週期

  1.session 管理rem

 

常見的坑:io

  1.ThreadLocal是與線程綁定的一個變量,假設沒有將ThreadLocal內的變量刪除(remove)或替換,它的生命週期將會與線程共存,假如咱們使用的是線程池,會致使下一個線程獲取到垃圾數據thread

解決方案:從設計的角度要讓ThreadLocal的set、remove善始善終,一般在外部調用的代碼中使用finally來remove數據變量

相關文章
相關標籤/搜索