執行緒ThreadLocal類

2021-09-24 16:17:18 字數 1650 閱讀 1813

threadlocal 在很多地方叫做本地變數,在有些地方叫做執行緒本地儲存。

threadlocal

在每個執行緒中為每個變數都建立了乙個副本,每個執行緒可以訪問自己內部的副本變數,而不會對其它執行緒的副本變數造成影響。

如果看不懂沒關係,下面會解釋各個函式的意思。

public t get(){}

public void set(t value){}

public void remove(){}

public t inittalvalue(){}

get()方法是用來獲取

threadlocal

在當前執行緒中儲存的變數副本,

set()

是用來設定當前執行緒中變數的副本,

remove()

是用來移除房錢執行緒中的變數副本,

initialvalue()

是乙個protected

方法,一般是用來在使用時進行重寫的。

首先,在每個執行緒thread內部都有乙個

threadlocal.threadlcoalmap

型別的成員變數

threadlocals

,該變數類似乙個

map,這個

map妞兒會死用來儲存實際的變數副本的,

key儲存每個

threadlocal

變數,value

用來儲存每個

threadlocal

儲存的值即變數副本。

初始時,threadlocals為空,當通過

threadlocal

變數呼叫

get()

方法或set()

方法,就會對

thread

類中threadlocals

進行初始化,並且以當前的

threadlocal

變數為鍵值,以

threadlocal

要儲存的變數的副本變數為

value

,存到threadlocals。

通過threadlocal建立的副本儲存在每個執行緒自己的

threadlocals中

threadlocals中用每個

threadlocal

作為key

,用每個

threadlocal

要儲存的變數副本為

value。

在進行get()方法之前,需要先進行

set()

,否則會報空指標異常。

常用來解決資料庫連線、session管理。

執行緒相關類(ThreadLocal類)

threadlocal,是tread local varcable 執行緒區域性變數 的意思。執行緒區域性變數 threadlocal 的功能其實非常簡單,就是為每乙個使用該變數的執行緒都提供乙個變數值的副本 threadlocal是採用雜湊表的方式來為每個執行緒都提供乙個變數的副本 而不會和其它執...

執行緒 類ThreadLocal的使用

類threadlocal主要解決的就是每個執行緒繫結自己的值,可以將threadlocal模擬喻成全域性存放資料的盒子,盒子中可以儲存每個執行緒的私有資料。public class run system.out.println tl.get system.out.println tl.get pub...

多執行緒學習 ThreadLocal類的使用

類threadlocal主要解決的就是每個執行緒繫結自己的值,可以將threadlocal模擬喻成全域性存放資料的盒子,盒子裡可以儲存每個執行緒的私有資料。使執行緒變數具有隔離性。設定兩個執行緒threada和threadb,每個執行緒都分別為用threadlocal設定值和取值。public cl...