什么是 ThreadLocal?
ThreadLocal 诞生于 JDK 1.2,用于解决多线程间的数据隔离问题。也就是说 ThreadLocal 会为每一个线程创建一个单独的变量副本。
ThreadLocal 有什么用?
ThreadLocal 最典型的使用场景有两个:
- ThreadLocal 可以用来管理 Session,因为每个人的信息都是不一样的,所以就很适合用 ThreadLocal 来管理;
- 数据库连接,为每一个线程分配一个独立的资源,也适合用 ThreadLocal 来实现。
其中,ThreadLocal 也被用在很多大型开源框架中,比如 Spring 的事务管理器,还有 Hibernate 的 Session 管理等,既然 ThreadLocal 用途如此广泛,那接下来就让我们共同看看 ThreadLocal 要怎么用?ThreadLocal 使用中要注意什么?以及 ThreadLocal 的存储原理等,一起来看吧。
ThreadLocal 使用
ThreadLocal 基本使用
ThreadLocal 常用方法有 set(T)、get()、remove() 等,具体使用请参考以下代码。
ThreadLocal threadLocal = new ThreadLocal();
// 存值
threadLocal.set(Arrays.asList("老王", "Java 面试题"));
// 取值
List list = (List) threadLocal.get();
System.out.println(list.size());
System.out.println(thre