目录
ThreadLocal 的原理
ThreadLocal 是 Java 中用于实现线程本地存储的类,它为每个线程提供独立的变量副本,避免了多线程环境下的竞争问题。
核心原理
-
线程隔离:
-
每个线程内部都有一个
ThreadLocalMap,用于存储线程本地变量。 -
ThreadLocal作为键,变量副本作为值,存储在当前线程的ThreadLocalMap中。
-
-
数据结构:
-
ThreadLocalMap是ThreadLocal的内部类,类似于HashMap,但键是ThreadLocal对象,值是线程本地变量。 -
ThreadLocalMap使用弱引用(WeakReference)存储键,避免内存泄漏。
-
-
操作机制:
-
set(T value):将值存储到当前线程的ThreadLocalMap中。 -
get():从当前线程的ThreadLocalMap中获取值。 -
remove():从当前线程的ThreadLocalMap中移除值。
-
示例代码
public class ThreadLocalExample {
private static final ThreadLocal<Integer> threadLocal = ThreadLocal.withInitial(() -> 0);
public static void main(String[] args) {
Runnable task = () -> {
int value = threadLocal.get();
threadLocal.set(value + 1);
System.out.println(Thread.currentThread().getName() + ": " + threadLocal.get());
};
Thread t1 = new Thread(task, "Thread-1");
Thread t2 = new Thread(task, "Thread-2");
t1.star

最低0.47元/天 解锁文章
2003

被折叠的 条评论
为什么被折叠?



