ThreadLocal工具類的使用(隔離思想)

2022-09-02 12:00:08 字數 1367 閱讀 2600

threadlocal不是用來解決共享物件的多執行緒訪問問題的

通過threadlocal的set()方法設定到執行緒的threadlocal.threadlocalmap裡的是是執行緒自己要儲存的物件,其他執行緒不需要去訪問,也是訪問不到的。各個執行緒中的threadlocal.threadlocalmap以及threadlocal.threadlocal中的值都是不同的物件。

set僅僅是表示將執行緒threadloaclmap中table處的value值重新設定,即覆蓋。

對於同乙個threadlocal物件而言,set後,table中絕不會多出乙個資料:12

34publicclasstools

12

3456

78910

1112

1314

1516

1718

1920

2122

2324

2526

publicclassthreadlocalthreadextendsthread

publicvoidrun()

}

catch(interruptedexception e)

}

}

1、threadlocal不是集合,它不儲存任何內容,真正儲存資料的集合在thread中。threadlocal只是乙個工具,乙個往各個執行緒的threadlocal.threadlocalmap中table的某一位置set乙個值的工具而已2、同步與threadlocal是解決多執行緒中資料訪問問題的兩種思路,前者是資料共享的思路,後者是資料隔離的思路

3、同步是一種以時間換空間的思想,threadlocal是一種空間換時間的思想

4、threadlocal和request區別:

(1)threadlocal只能存乙個值,乙個request由於是map形式的,可以用key-value形式存多個值

(2)threadlocal一般用在框架,request一般用在表示層、action、servlet

ThreadLocal類的講解

1.執行緒區域性變數,同乙個執行緒內共享資料 2.api threadlocal底層是乙個map,其api和map也很類似 set value 給threadlocal賦值,threadlocal底層是乙個map,key是當前執行緒名,value就是引數裡傳進來的value值。可以想象出set va...

執行緒ThreadLocal類

threadlocal 在很多地方叫做本地變數,在有些地方叫做執行緒本地儲存。threadlocal 在每個執行緒中為每個變數都建立了乙個副本,每個執行緒可以訪問自己內部的副本變數,而不會對其它執行緒的副本變數造成影響。如果看不懂沒關係,下面會解釋各個函式的意思。public t get publi...

執行緒相關類(ThreadLocal類)

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