ThreadLocal作用,原理

2021-10-25 08:35:10 字數 1034 閱讀 4091

threadlocal一般被稱為執行緒池本地變數或執行緒本地儲存。起作用是為「當前執行緒」提供乙個臨時持有和傳遞物件的方法。

由同乙個執行緒鎖執行的**,只要持有同乙個threadlocal物件的引用,就都能訪問到與當前執行緒繫結的同乙個資料物件。

threadlocal的內部宣告乙個自動定義的threadlocalmap。它以當前執行緒物件的引用為key,將希望儲存赫爾傳遞的資料物件儲存在這個map當中。以這樣一種方式來為每乙個執行緒分別儲存乙個值。

我們先了解下它裡面基礎方法:

get() :獲取到當前執行緒的設定值

setinitialvalue():設定值

set(t value):往當前執行緒寫入值

remove():當前執行緒的值

首先我們看一下其方法對應的原始碼

//初始化值為null

protected t initialvalue()

//設定threadlocalmap物件的值,或者建立threadlocalmap物件

private t setinitialvalue()

get方法原始碼

//獲取當前執行緒的值

public t get()

}return setinitialvalue();

}

set方法

public void set(t value)
remove方法:

public void remove()
使用threadlocal需要注意的問題:

1、可能會資料獲取錯誤。

2、記憶體洩漏問題。

例項**:

public class threadlocaltest1  finally 

});} cachedpool.shutdown();

}}

ThreadLocal的作用和原理

threadlocal是用來建立當前執行緒的區域性變數的類,建立的變數只能被當前執行緒訪問和修改 原理 set方法的原理 1.首先獲取當前執行緒物件 2.利用當前執行緒獲取threadlocalmap物件 3.如果threadlocalmap物件不為空,則設定值,否則建立這個map物件並設定值 由此...

ThreadLocal的作用和實現原理

threadlocal是乙個執行緒內部的資料儲存類,通過它可以在指定的執行緒中儲存資料,資料儲存以後,只有在指定的執行緒中可以獲取到儲存的資料,對於其他執行緒來說則無法取到資料。threadlocal的主要作用 輕鬆實現一些看起來很複雜的功能,適合以下一些應用場景。某些資料是以執行緒為作用域並且不同...

ThreadLocal原理探尋

筆者今天趁著專案空隙,學習了下threadlocal這個類,探尋了下多執行緒下如何實現執行緒安全的原理。分享下 package com.suning.sample.transcation public class threadtest public static void main string a...