线程的 threadlocal
时间: 2023-12-01 20:42:12 浏览: 85
ThreadLocal是Java中的一个线程本地变量类,它可以让每个线程都拥有自己的变量副本,从而避免了多个线程之间对同一变量进行修改时的线程安全问题。具体来说,ThreadLocal类提供了get()和set()方法,可以分别用于获取和设置当前线程的变量副本。在多线程并发执行过程中,每个线程都可以通过ThreadLocal对象获取自己的变量副本,从而实现了线程间变量的隔离。
下面是一个简单的示例,演示了如何使用ThreadLocal类实现线程间变量的隔离:
```java
public class ThreadLocalDemo {
private static ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>() {
@Override
protected Integer initialValue() {
return 0;
}
};
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
new Thread(new Runnable() {
@Override
public void run() {
int num = threadLocal.get();
threadLocal.set(num += 5);
System.out.println(Thread.currentThread().getName() + " : " + threadLocal.get()); }
}).start();
}
}
}
```
在上面的示例中,我们创建了一个ThreadLocal对象,并在其中定义了一个初始值为0的变量副本。然后,我们创建了5个线程,并在每个线程中获取自己的变量副本,并将其加上5,最后输出结果。由于每个线程都拥有自己的变量副本,因此它们之间的操作互不干扰,从而避免了线程安全问题。
阅读全文