ThreadLocal 使用方法以及原理
一. 什么是 ThreadLocal
我们都知道,并发出现问题的原因是因为多个线程对共享变量的操作引起的。那为什么本地变量不会有这种问题呢?是因为每个线程都有自己独立的调用栈,而局部变量是存在于某个方法栈中,其他线程并不会侵入当前线程的调用栈中执行方法,所以局部变量时不会共享的。
如果理解了局部变量都是线程安全的原理以后,那就知道 ThreadLocal 就是这种原理的实现,也就是避免局部变量的共享。
二. ThreadLocal 如何使用
在讲原理之前先看一下 ThreadLocal 如何使用。
public class ThreadTest {
private static ThreadLocal<Object> threadLocal;
static {
threadLocal = new ThreadLocal<>();
}
public static void main(String[] args) {
Thread thread1 = new Thread(() -> {
threadLocal.set(Thread.currentThread().getName());
System.out.println("线程1获取到内容:" + threadLocal.get());
}