首页 > 其他 > 详细

ThreadLocal应用及原理分析

时间:2020-06-12 18:20:31      阅读:39      评论:0      收藏:0      [点我收藏+]

其实ThreadLocal早就有用过,原理也仅限于适用于多线程的同名变量,但其作用范围在单个线程内部,

但是面试时这样回答没有说服力,看看别人怎么说的,“当某些变量是以线程为作用域,并且不同线程有不同的值时,用ThreadLocal比较合适”。

一.用法

1.一般来说在类中声明

private static ThreadLocal<T> local = new ThreadLocal<T>();

2.在Runnable中不能声明为静态

private ThreadLocal<T> local = new ThreadLocal<T>();

3.设置和获取变量值

local.get();

local.set(T);

注意:在系统开发中,当前请求的用户信息一般来说都用ThreadLocal保存,但是会存在多个用户占用一个线程,

如果第二个用户信息为null的话,就会自用第一个用户的信息,为避免这种情况,在用户信息为null时,

local.set(null);

二.原理

因为适用于多线程,应该是作为一个static全局变量存在

static Map<ThreadId,Map<ThreadLocal,Object>>

ThreadId为线程ID,可以根据当前的线程ID获取当前线程的ThreadLocalMap.

ThreadLocal应用及原理分析

原文:https://www.cnblogs.com/guoyinglin/p/13102841.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!