執行緒本地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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java執行緒(篇外篇):執行緒本地變數ThreadLocalJava執行緒變數thread
- java 併發,為執行緒建立本地變數 ThreadLocal的使用Java執行緒變數thread
- Android執行緒池使用介紹Android執行緒
- 執行緒池介紹執行緒
- IOS執行緒介紹iOS執行緒
- C#執行緒本地儲存:LocalDataStoreSlot和ThreadLocalC#執行緒LDAASTthread
- 多執行緒系列(十七) -執行緒組介紹執行緒
- iOS 多執行緒介紹iOS執行緒
- Java多執行緒10:ThreadLocal的作用及使用Java執行緒thread
- Java多執行緒與併發之ThreadLocalJava執行緒thread
- 【多執行緒】ThreadLocal原理執行緒thread
- java多執行緒——ThreadLocalJava執行緒thread
- 執行緒併發執行緒安全介紹及java.util.concurrent包下類介紹執行緒Java
- MySQL Replication的複製執行緒介紹MySql執行緒
- 執行緒的私有領地 ThreadLocal執行緒thread
- ThreadLocal的介紹thread
- 執行緒介紹及建立方式執行緒
- Java 執行緒池詳細介紹Java執行緒
- java中ThreadLocal作用與執行緒安全問題Javathread執行緒
- 深入理解java:執行緒本地變數 java.lang.ThreadLocal類Java執行緒變數thread
- Java多執行緒之synchronized的小介紹Java執行緒synchronized
- js使用yield模擬多執行緒的方法簡單介紹JS執行緒
- Java多執行緒傻瓜入門介紹Java執行緒
- 執行緒安全處理之Threadlocal執行緒thread
- python關於執行緒的一點介紹Python執行緒
- 執行緒池的介紹及簡單實現執行緒
- MySQL主執行緒、從I/O執行緒和從SQL執行緒的State列常見狀態介紹MySql執行緒
- Java多執行緒(04)執行緒狀態與上線文切換以及Thread方法介紹Java執行緒thread
- Nexus.js介紹:一個多執行緒的JavaScript執行庫JS執行緒JavaScript
- 【多執行緒系列】CAS、AQS簡單介紹執行緒AQS
- 詳細介紹執行緒的基本概念、屬性執行緒
- 執行緒與多執行緒執行緒
- Java執行緒池中執行緒的狀態簡介Java執行緒
- 廣義多執行緒安全之鎖與iOS鎖簡單介紹執行緒iOS
- ThreadLocal執行緒重用時帶來的問題thread執行緒
- Java執行緒:執行緒的同步與鎖Java執行緒
- 執行緒簡介執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒