ThreadLocal 應用場景

2021-10-08 16:47:56 字數 1051 閱讀 4580

1.threadlocal 是乙個儲存物件,它可分為static全域性變數,區域性變數,下面介紹的是全域性變數。

當乙個多執行緒讀寫時就會出現併發的現象,也就當物件共享時會出現的場景。在網上檢視了一下別的網友的介紹。

public class threadlocaltest 

public static string getname()

public static void main(string args) , "thread1").start();

new thread(() -> , "thread2").start();

nameinfo.remove();

ageinfo.remove();}}

變數介面如下圖

原始碼分析:

threadlocalmap是乙個map,key是threadlocal,value是object

對映到原始碼就是如下所示: threadlocalmap是threadlocal的乙個靜態內部類

public class thread implements runnable
往threadlocalmap裡面放值

// threadlocal類裡面的方法,將原始碼整合了一下

public void set(t value)

從threadlocalmap裡面取值

// threadlocal類裡面的方法,將原始碼整合了一下

public t get()

}return setinitialvalue();

}

從threadlocalmap裡面刪除值

// threadlocal類裡面的方法,將原始碼整合了一下

public void remove()

ThreadLocal應用場景(一)

threadlocal,叫做執行緒本地變數,或叫做執行緒本地儲存,threadlocal為變數在每個執行緒中都建立了乙個副本,每個執行緒可以訪問自己內部的副本變數。應用場景 資料連線等執行緒私有物件 private static final threadlocallocal new threadlo...

ThreadLocal的理解與應用場景分析

在web開發的 session中 不同的執行緒對應不同的 session 那麼如何針對不同的執行緒獲取對應的 session 呢?我們可以設想了如下兩種方式 1.在action中建立 session 然後傳遞給 service service 再傳遞給 dao,很明顯,這種方式將使 變得臃腫複雜。2...

ThreadLocal的使用場景

在使用jdbc的時候,可以保證dao層與service層使用同乙個資料庫連線,從而保證資料庫 service層 事務的可行性。1.業務類和dao使用的執行緒是同乙個。a 可以分別列印兩個類中的當前執行緒。看他們的hashcode是否是同乙個。b 如何獲取當前執行緒。thread.currentthr...