本節(jié),我們來(lái)探討一個(gè)特殊的概念,線程本地變量,在Java中的實(shí)現(xiàn)是類ThreadLocal,它是什么?有什么用?實(shí)現(xiàn)原理是什么?讓我們接下來(lái)逐步探討。

基本概念和用法

線程本地變量是說(shuō),每個(gè)線程都有同一個(gè)變量的獨(dú)有拷貝,這個(gè)概念聽上去比較難以理解,我們先直接來(lái)看類TheadLocal的用法。

ThreadLocal是一個(gè)泛型類,接受一個(gè)類型參數(shù)T,它只有一個(gè)空的構(gòu)造方法,有兩個(gè)主要的public方法:

public T get()public void set(T value)

set就是設(shè)置值,get就是獲取值,如果沒(méi)有值,返回null,看上去,ThreadLocal就是一個(gè)單一對(duì)象的容器,比如:

public static void main(String[] args) {
    ThreadLocal<Integer> local = new ThreadLocal<>();
    local.set(100);
    Syst