guoyinglin

其实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.

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-27
  • 2021-06-12
  • 2021-12-20
  • 2021-04-24
  • 2021-09-08
  • 2022-02-19
猜你喜欢
  • 2022-12-23
  • 2021-09-01
  • 2022-01-03
  • 2021-09-09
  • 2021-10-20
  • 2022-12-23
相关资源
相似解决方案