public class testThreadlocal {
public static ThreadLocal<Integer> local = new ThreadLocal<>();
int cc=0;
@GetMapping("cl")
public int a(){
local.set(cc);
int lc=local.get()+11;
System.out.println(local.get());
return lc;
}
@GetMapping("cl2")
public int a2(){
int lc=local.get()+131;
System.out.println("a");
return lc;
}
@GetMapping("cl3")
public int a3(){
System.out.println("a");
return local.get();
}
}
分别用2个页面访问cl/cl2, 为什cl2访问会出现 local.get()空指针
ThreadLocal 是与当前线程绑定的,多次请求时用的线程并不是同一个,自然无法获取存入的值。
对于Tomcat等框架,每次请求都会重新分配一个线程去处理。