ThreadLocal 代码实现
时间: 2023-07-11 16:53:22 浏览: 80
ThreadLocal是Java中的一个线程本地变量,每个线程都有自己独立的变量副本,互不干扰。下面是一个简单的ThreadLocal的代码实现:
```java
public class ThreadLocalDemo {
public static void main(String[] args) {
// 创建一个ThreadLocal变量
ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>() {
@Override
protected Integer initialValue() {
return 0;
}
};
// 创建两个线程,同时访问ThreadLocal变量
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 5; i++) {
int num = threadLocal.get();
threadLocal.set(num + 1);
System.out.println(Thread.currentThread().getName() + " : " + threadLocal.get());
}
});
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 5; i++) {
int num = threadLocal.get();
threadLocal.set(num + 1);
System.out.println(Thread.currentThread().getName() + " : " + threadLocal.get());
}
});
thread1.start();
thread2.start();
}
}
```
在这个示例中,我们创建了一个ThreadLocal变量,并且重写了initialValue()方法,使得每个线程的变量初始值都为0。我们创建了两个线程,同时访问ThreadLocal变量,每次访问时都会将变量加1,并且输出线程名和变量值。在这个过程中,我们可以看到每个线程都有自己独立的变量副本,互不干扰。
阅读全文