在使用jdbc的時候,可以保證dao層與service層使用同乙個資料庫連線,從而保證資料庫(service層)事務的可行性。
1.業務類和dao使用的執行緒是同乙個。
a)可以分別列印兩個類中的當前執行緒。看他們的hashcode是否是同乙個。
b)如何獲取當前執行緒。thread.currentthread();
2.如果執行緒有空間可以放conn,那麼我在業務類中把conn放入當前執行緒裡面,到dao中從當前執行緒裡面獲取,就可以保證兩個conn是同乙個。
執行緒有這樣空間嗎?
答案是肯定的。如何操作這個空間。
3.threadlocal可以操作當前執行緒的空間,哪個執行緒在執行threadlocal,threadlocal就操作了哪個執行緒。
a)如何建立出threadlocal物件。 threadlocal tl=new threadlocal();
b)threadlocal如何往當前執行緒裡面放資料。tl.set(object);
c)threadlocal如何從當前執行緒裡面取資料。tl.get();
d)threadlocal如何從當前執行緒裡面移除資料。tl.remove();
threadlocal(執行緒空間), 作為乙個空間臨時儲存唯一變數,類似於單例。
在業務上又和單例的意義不同,具體業務,區別對待。
25 ThreadLocal的使用場景
threadlocal提供了get與set等訪問介面或方法,這個方法為每個使用該變數的執行緒都存有乙份獨立的副本,因此get總是返回由當前執行執行緒在呼叫set時設定的最新值。threadlocal物件經常用於防止對可變的單例項變數 singleton 或全域性變數進行共享。從概念上看,你可以將th...
ThreadLocal的原理和使用場景
每乙個thread物件均含有乙個threadlocalmap型別的成員變數threadlocals,它儲存本執行緒中所有threadlocal物件及其對應的值 threadlocalmap是由乙個個entry物件構成,entry繼承自weakreference,乙個entry是由threadloca...
ThreadLocal使用場景及其優勢
曾經很疑惑threadlocal是幹什麼用?什麼場景下要用?查了幾篇文章,都說它的優勢是執行緒安全,想必他的作用就是為了執行緒安全吧。仔細理解後發現,原來我們常用的區域性變數和靜態變數,在某種情況下無法滿足要求,比如,我要求快取乙個變數,這個時候你肯定會說搞乙個靜態map存一下就ok了,但是有幾個問...