讀書筆記 ThreadLocal

2021-08-28 14:07:06 字數 744 閱讀 7190

每個執行緒中可以持有很多個threadlocal物件,這些物件通過hash後儲存在thread的threadlocalmap中,其中的key為threadlocal物件,value為該物件在本執行緒中的乙個副本

由上圖可知,threadlocal本身並不儲存value值,只是作為key在threadlocalmap中索引value值

同步機制採用了「以時間換空間」的方式,而threadlocal採用了「以空間換時間」的方式。前者僅提供乙份變數,讓不同的執行緒排隊訪問,而後者為每乙個執行緒都提供了乙份變數,因此可以同時訪問而互不影響。

spring使用threadlocal解決執行緒安全問題我們知道在一般情況下,只有無狀態的bean才可以在多執行緒環境下共享,在spring中,絕大部分bean都可以宣告為singleton作用域。就是因為spring對一些bean(如requestcontextholder、transactionsynchronizationmanager、localecontextholder等)中非執行緒安全狀態採用threadlocal進行處理,讓它們也成為執行緒安全的狀態,因為有狀態的bean就可以在多執行緒中共享了。

一般的web應用,從接收請求到返回響應所經過的所有程式呼叫都同屬於乙個執行緒,如下圖所示

public void set(t value)

mysql運維 讀書筆記 Mysql 讀書筆記

mysql儲存時間有兩種型別 datetime和timestamp。分別說一下兩者的區別。datetime,以8位元組儲存時間,理論上可以從0000年儲存到9999年。並且沒有時區的概念,它儲存的就是乙個時間點的概念。timestamp和datetime最主要的不同就是,它是以4個位元組儲存,由19...

struts in action讀書筆記

struts in action 學習筆記 一 struts的控制流 因為web 應用是動態的,所以很難表現 乙個真正固定的控制流 取決於環境,不同的方式下有很多不同的事情發生 特別是在web 應用中。但是事情仍然有乙個通用的秩序。如果你是個struts,應用框架,甚至web 應用的新手,這些流程剛...

中 斷(讀書筆記)

裝置的中斷會打斷核心中程序的正常排程和執行,系統對更高吞吐率的追求勢必要求中斷服務程式盡可能地短小精悍。但是這個良好的願望往往與現實並不吻合。在大多數的系統中,當中斷到來時,要完成的工作往往並不是短小的,它可能要求進行較大量的耗時處理。為了在中斷執行時間盡可能短和中斷處理需要完成大量工作之前找乙個平...