亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ThreadLocal是如何和各個Thread之間建立起關聯的

發布時間:2021-12-17 14:35:39 來源:億速云 閱讀:172 作者:柒染 欄目:大數據

本篇文章為大家展示了ThreadLocal是如何和各個Thread之間建立起關聯的,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

我們來看 ThreadLocal 是如何和各個 Thread 之間建立起關聯的呢?

我們來看,每個Thread,都有這樣一個屬性,一個ThreadLocal.ThreadLocalMap的屬性,能互不影響的秘密都在這里。

/* ThreadLocal values pertaining to this thread. This map is maintained

     * by the ThreadLocal class. */

    ThreadLocal.ThreadLocalMap threadLocals = null;

這個ThreadLoalMap是什么時候被設置值的呢?

我們來看ThreadLocal的使用。

一般的用法是:

ThreadLocal<Integer> local = new ThreadLocal<Integer>() {

protected Integer initialValue() {

                    return 1;

                }

};

然后使用這個ThreadLocal變量進行set和get操作。

set的時候,會先判斷對于當前線程,是否已經分配了map,沒有則創建。

public void set(T value) {

        Thread t = Thread.currentThread();

        ThreadLocalMap map = getMap(t);

        if (map != null)

            map.set(this, value);

        else

            createMap(t, value);

    }

是否已經分配過map就是根據當前線程的 theThreadLocals 屬性來判斷的

ThreadLocalMap getMap(Thread t) {

    return t.threadLocals;

}

那createMap的時候,就會給當前線程的threadLocals賦值

void createMap(Thread t, T firstValue) {

    t.threadLocals = new ThreadLocalMap(this, firstValue);

}

這個ThreadLocalMap里是以數組的形式放的多個Entry。

在 get 的時候,如果沒數據會根據上面的initValue方法創建一個新的返回。這樣多個線程用的就是不同的東西了。

那這里還有一點,對于不同的東西, ThreadLocal 可以通過泛型做區分,當然你也能一股腦的放到一起,那取的時候就費勁了。

上述內容就是ThreadLocal是如何和各個Thread之間建立起關聯的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

雷波县| 高要市| 鄄城县| 青海省| 甘德县| 五台县| 娱乐| 柳州市| 德兴市| 郁南县| 杭锦旗| 曲麻莱县| 石首市| 康乐县| 勃利县| 雷山县| 东宁县| 民勤县| 鞍山市| 得荣县| 左云县| 建宁县| 连州市| 六盘水市| 克东县| 大理市| 关岭| 中超| 吴旗县| 高雄市| 南投县| 聂拉木县| 麟游县| 定陶县| 新绛县| 河津市| 塔城市| 云龙县| 东阳市| 新和县| 崇义县|