并发编程threadlocal
时间: 2023-11-07 21:54:27 浏览: 186
ThreadLocal类是Java并发编程中的一个重要概念。它提供了线程局部变量的功能,能够保证每个线程的变量拥有独立的副本,从而避免了线程间的数据共享问题。每个ThreadLocal对象都会维护一个ThreadLocalMap,其中存储了每个线程对应的变量副本。
使用ThreadLocal时,我们可以通过调用set方法将变量存储到当前线程的ThreadLocalMap中,然后通过get方法获取对应的变量副本。这样每个线程都可以独立地操作自己的变量副本,互不干扰。
以下是一个简单的示例代码:
```
public class TestThreadLocal {
private static ThreadLocal<String> threadLocal = new ThreadLocal<>();
public static void main(String[] args) {
threadLocal.set("Hello");
System.out.println(threadLocal.get());
new Thread(() -> {
System.out.println(threadLocal.get());
}).start();
}
}
```
运行结果为:
```
Hello
null
```
在这个例子中,我们使用ThreadLocal来存储字符串变量。在主线程中,我们首先调用set方法将字符串"Hello"存储到当前线程的ThreadLocalMap中,然后调用get方法获取变量副本并打印。接着创建一个新线程,在新线程中调用get方法获取变量副本并打印。由于每个线程拥有独立的变量副本,所以主线程和新线程获取到的值是不同的。
阅读全文