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...