問題:多執行緒之間的資料共享,保證執行緒安全。
舉例**實現:
public
class
threadlocaltest})
.start()
;}}static
classa}
static
classb}
}
原理:
threadlocal的set方法:
public
void
set(t value)
注意:getmap()方法獲取的是執行緒自己的threadlocals屬性。
threadlocalmap getmap
(thread t)
threadlocal.threadlocalmap threadlocals = null;
解釋:所以其實是 threadlocal 內部維護了乙個 threadlocalmap 的靜態內部類。而我們使用的 get()、set() 方法其實都是呼叫了這個threadlocalmap類對應的 get()、set() 方法。
使用場景:
每個執行緒需要有自己單獨的例項。
例項需要在多個方法中共享,但不希望被多執行緒共享。
Java多執行緒之 ThreadLocal
threadlocal是什麼 每乙個threadlocal能夠放乙個執行緒級別的變數,也就是說,每乙個執行緒有獨自的變數,互不干擾。以此達到執行緒安全的目的,並且一定會安全。實現原理 要了解實現原理,我們先看set方法 public void set t value 引數是我們要存的值 object...
多執行緒 ThreadLocal
目錄 一 threadlocal 概述 1.1 threadlocal 是什麼 1.2 threadlocal 的作用 二 threadlocal 的使用和原始碼分析 2.1 threadlocal 如何使用 2.1.1 常見方法 2.1.2 使用示例 2.2 threadlocal 原始碼分析 2...
多執行緒 ThreadLocal
執行緒的變數副本 就像命名一樣 每個執行緒隔離。每個thread都有自己的threadlocalmap,threadlocalmap的底層是使用陣列 其中每個entry,它的key是threadlocal k,繼承自weakreference,也就是我們常說的弱引用型別,可以簡單地將它的key視作t...