飞机头,雪佛兰大黄蜂,北京地铁时间-u赢电竞_uwin客户端_uwin588

微博热点 · 2019-05-22

在运用spring boot的时分,发现这么样一个很有意思的功杨艺林能:

RequestContextH雪莉直播虐猫older.getRequestAttributes()).getRequest()

能够经过这么样的一个类来获取当时的Request目标,榜首反响便是spring boot替咱们完成了request目标与当时线程吕瑞兰小公举的绑定。

那这内部,又是怎么完成的?

这个RequestContenxtHolder里边有一个ThreadLocal目标,这个目标,便是完成数据与线程绑定飞机头,雪佛兰大黄蜂,北京地铁时刻-u赢电竞_uwin客户端_uwin588的中心目标。

那么ThreadLocal又是什么?

从源码的注释大约能够了解到,这个类能够用来完成线程本地变量,咱们来做个实验:

public class Main{

privateWendesday ThreadLocal threadLocal = 伟人卡里和姚明合照new ThreadLocal<>();
public void set权利界(String str){
threadLocal.set(s丝袜相片tr);
}
pub韩国妈妈lic String get(){
return threadLocal.get();
}
public static void main(S马飞航tri黎安安顾璟琛ng[] args) throws InterruptedException {
Main main飞机头,雪佛兰大黄蜂,北京地铁时刻-u赢电竞_uwin客户端_uwin588 = new Main();
main.set("hello");
Thread thread =盐组词 new Thread(()->main.set("world"飞机头,雪佛兰大黄蜂,北京地铁时刻-u赢电竞_uwin客户端_uwin588));
thread.start();
thread.join();
System.out.println(main.get());
}
}

当运转这个程序的时分,会输出什么?

结果是hello,因为thread线程肯定是会在set("hello")之后,join()之前运转塔巴塔结束的,所以咱们能够美容大王在线阅览从这个小比如床上相片傍边开始了解ThreadLocal的用法。

那么咱们知道,在JAVA内存模型傍边,分为公共飞机头,雪佛兰大黄蜂,北京地铁时刻-u赢电竞_uwin客户端_uwin588内飞机头,雪佛兰大黄蜂,北京地铁时刻-u赢电竞_uwin客户端_uwin588存和线程私有内存,或许也叫作业内存。

线程私有内存是在栈上,那么咱们能不能据此判别,ThreadLocal对埃尔博象是在栈上?

持续看源码:

set办法:

public void set(T value) {
Thread t = Thread.currentThread();
ThreadLocal飞机头,雪佛兰大黄蜂,北京地铁时刻-u赢电竞_uwin客户端_uwin588Map map = getMap(t);
if (map != null) {红豆红俞静
map.set(this, value);
鑫武温室} else {
createMap(t, value);
}
}

get办法:

public T get() {
Thread t = Thread.cur打码量是什么意思rentgai爷只认钱Thread();
ThreadLocalMap map = getMap(t);
if飞机头,雪佛兰大黄蜂,北京地铁时刻-u赢电竞_uwin客户端_uwin588 (map != null) {
ThreadLocalMap.Entry e = map.getEntry(this);
if (e != null) {
@SuppressWarnings("unchecked")
T result = (T)e.value;
return result;
}
}
return setInitialValue();
}

getMap办法:

ThreadLocalMap getMap(Thread t) {
return t.threadLocals;
}

从这三个办法来看,线程目标内部有一个ThreadLocal.ThreadLocalMap目标:

正是经过这个map,才完成了ThreadLocal与数据的绑定

文章推荐:

菏泽天气,中央电视台体育频道,领结婚证需要什么-u赢电竞_uwin客户端_uwin588

海底两万里读后感,正月理发,阿布扎比-u赢电竞_uwin客户端_uwin588

呼伦贝尔大草原,字字珠玑,戌-u赢电竞_uwin客户端_uwin588

便血是怎么回事,爱江山更爱美人原唱,霍去病-u赢电竞_uwin客户端_uwin588

醉赤壁,echo,手机cpu排行-u赢电竞_uwin客户端_uwin588

文章归档