執行緒本地ThreadLocal的介紹與使用!
ThreadLocal簡介
我們透過上兩篇的學習,我們已經知道了變數值的共享可以使用public static變數的形式,所有的執行緒都使用同一個被public static修飾的變數。
那麼如果我們想實現每一個執行緒都有自己的共享變數該如何解決哪?JDK提供的ThreadLocal正是為了解決這樣的問題的。
類ThreadLocal主要解決的就是每個執行緒繫結自己的值,可以將ThreadLocal類比喻成全域性存放資料的盒子,盒子中可以儲存每個執行緒的私有變數。
先舉個例子
示例程式碼如下:
執行結果:
可以看出雖然多個執行緒對同一個變數進行訪問,但是由於threadLocal變數由ThreadLocal 修飾,則不同的執行緒訪問的就是該執行緒設定的值,這裡也就體現出來ThreadLocal的作用。
當使用ThreadLocal維護變數時,ThreadLocal為每個使用該變數的執行緒提供獨立的變數副本,所以每一個執行緒都可以獨立地改變自己的副本,而不會影響其它執行緒所對應的副本。
ThreadLocal與synchronized同步機制的比較
在同步機制中,透過物件的鎖機制保證同一時間只有一個執行緒訪問變數。這時該變數是多個執行緒共享的,使用同步機制要求程式慎密地分析什麼時候對變數進行讀寫,什麼時候需要鎖定某個物件,什麼時候釋放物件鎖等繁雜的問題,程式設計和編寫難度相對較大。
ThreadLocal是執行緒區域性變數,是一種多執行緒間併發訪問變數的解決方案。和synchronized等加鎖的方式不同,ThreadLocal完全不提供鎖,而使用以空間換時間的方式,為每個執行緒提供變數的獨立副本,以保證執行緒的安全。
本文來自千鋒教育,轉載請註明出處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2780042/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android執行緒池使用介紹Android執行緒
- java 併發,為執行緒建立本地變數 ThreadLocal的使用Java執行緒變數thread
- 執行緒池介紹執行緒
- 多執行緒系列(十七) -執行緒組介紹執行緒
- iOS 多執行緒介紹iOS執行緒
- 【多執行緒】ThreadLocal原理執行緒thread
- Java多執行緒與併發之ThreadLocalJava執行緒thread
- 執行緒的私有領地 ThreadLocal執行緒thread
- ThreadLocal的介紹thread
- 可傳輸執行緒本地簡介執行緒
- 執行緒介紹及建立方式執行緒
- 深入理解java:執行緒本地變數 java.lang.ThreadLocal類Java執行緒變數thread
- python關於執行緒的一點介紹Python執行緒
- 執行緒安全處理之Threadlocal執行緒thread
- Java多執行緒(04)執行緒狀態與上線文切換以及Thread方法介紹Java執行緒thread
- Java多執行緒傻瓜入門介紹Java執行緒
- Nexus.js介紹:一個多執行緒的JavaScript執行庫JS執行緒JavaScript
- ThreadLocal執行緒重用時帶來的問題thread執行緒
- Java併發 之 執行緒組 ThreadGroup 介紹Java執行緒thread
- 【多執行緒系列】CAS、AQS簡單介紹執行緒AQS
- 詳細介紹執行緒的基本概念、屬性執行緒
- 執行緒與多執行緒執行緒
- 第二章 Redis API的使用 單執行緒介紹【Redis入門教程】RedisAPI執行緒
- 達夢資料庫執行緒簡單介紹資料庫執行緒
- MySQL多執行緒同步MySQL-Transfer介紹TZMySql執行緒
- 執行緒簡介執行緒
- 冷門前端知識,介紹雙執行緒的小程式!前端執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- Java多執行緒-執行緒池的使用Java執行緒
- 執行緒、執行緒與程式、ULT與KLT執行緒
- 執行緒封閉之ThreadLocal原始碼詳解執行緒thread原始碼
- 多執行緒程式設計介紹-條件變數執行緒程式設計變數
- java多執行緒之執行緒的基本使用Java執行緒
- 深入理解JVM(③)執行緒與Java的執行緒JVM執行緒Java
- 【多執行緒總結(二)-執行緒安全與執行緒同步】執行緒
- Java併發:ThreadLocal的簡單介紹Javathread
- 記一次執行緒池配置導致的ThreadLocal清空執行緒thread
- 執行緒池的使用執行緒