執行緒 ThreadLocal使用及資料結構

2021-09-11 18:15:27 字數 1178 閱讀 6156

1、threadlocal的使用

threadlocal的確是資料的隔離,但是並非資料的複製,而是在每乙個執行緒中建立乙個新的資料物件,然後每乙個執行緒使用的是不一樣的。

public

class

threadlocaltest};

public integer getnextstr()

public

static

void

main

(string[

] args)

private

static

class

mythread

extends

thread

@override

public

void

run()}

}}

thread-2:

:::1

thread-1:

:::1

thread-1:

:::2

thread-1:

:::3

thread-2:

:::2

thread-2:

:::3

thread-0:

:::1

thread-0:

:::2

thread-0:

:::3

這裡可以看出,在每乙個執行緒的確是沒有互相影響

2、threadlocal的資料結構

threadlocal的資料結構如下:

static

class

threadlocalmap

}

threadlocal內部有乙個threadlocalmap,可以從名字看出,它是乙個hashmap,我們在使用的鍵值對多少儲存在這個map裡面。讓我們來看一下,threadlocal的set()方法:

public

void

set(t value)

從上面的**可以看出,這裡的方法是以當前執行緒為key,使用人員自定義的value為值,然後放置在threadlocal的內部threadlocalmap中。

執行緒 類ThreadLocal的使用

類threadlocal主要解決的就是每個執行緒繫結自己的值,可以將threadlocal模擬喻成全域性存放資料的盒子,盒子中可以儲存每個執行緒的私有資料。public class run system.out.println tl.get system.out.println tl.get pub...

執行緒ThreadLocal類

threadlocal 在很多地方叫做本地變數,在有些地方叫做執行緒本地儲存。threadlocal 在每個執行緒中為每個變數都建立了乙個副本,每個執行緒可以訪問自己內部的副本變數,而不會對其它執行緒的副本變數造成影響。如果看不懂沒關係,下面會解釋各個函式的意思。public t get publi...

多執行緒 ThreadLocal

目錄 一 threadlocal 概述 1.1 threadlocal 是什麼 1.2 threadlocal 的作用 二 threadlocal 的使用和原始碼分析 2.1 threadlocal 如何使用 2.1.1 常見方法 2.1.2 使用示例 2.2 threadlocal 原始碼分析 2...