Java ThreadLocal父子线程传递数据
时间: 2023-07-01 13:18:15 浏览: 171
给Thread线程传递数据
Java中的ThreadLocal类可以用于在父子线程之间传递数据。ThreadLocal是一个线程本地变量,它是与线程相关联的,每个线程都有自己的ThreadLocal变量实例,线程之间的变量互不干扰。
在父线程中创建ThreadLocal变量并设置变量值后,子线程可以通过ThreadLocal获取该变量的值。具体实现方式如下:
1.在父线程中创建ThreadLocal变量,并设置变量值:
```
ThreadLocal<String> threadLocal = new ThreadLocal<>();
threadLocal.set("hello");
```
2.在子线程中获取父线程中的ThreadLocal变量的值:
```
Thread childThread = new Thread(() -> {
String value = threadLocal.get();
System.out.println(value); // 输出 hello
});
childThread.start();
```
在子线程中获取ThreadLocal变量值时,实际上是通过线程的ThreadLocalMap来获取的,因为每个线程都有自己的ThreadLocalMap,该Map中存储了该线程所对应的ThreadLocal变量的值。
需要注意的是,如果在子线程中修改ThreadLocal变量的值,那么父线程中的ThreadLocal变量的值不会受到影响,因为它们是各自独立的。
阅读全文