多執行緒之ThreadLocal

2021-10-24 14:34:07 字數 699 閱讀 2208

問題:多執行緒之間的資料共享,保證執行緒安全。

舉例**實現:

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...