我們開發web系統的時候,經常會用到ThreadLocal進行session的管理,對于 ThreadLocal的有關理解我是這樣的:
我們用ThreadLocal是為了實現線程緩沖池的作用,就象數據庫連接池一樣,能夠給本地用戶提供現有的session對象。它并不是線程的一種實現,而是在維護本地變量,為各自的本地提供維護的渠道,避免線程的沖突。
但是,ThreadLocal的確是相對線程的,每個線程都會有自己的ThreadLocal,在一個系統的線程池里面,不同用戶訪問時候,可能會接受到同樣的線程,這個時候要注意了,如果你這個時候用到了ThreadLocal變量,要注意避免ThreadLocal緩存(即:其他的線程訪問到本線程ThreadLocal變量);