下次执行get、set方法遍历数组,遍历到这个位置,才会删除这个无效的value。这也是造成内存泄漏的原因之一。
6.7 怎么实现父子线程共享ThreadLocal数据?
只需要InheritableThreadLocal即可,当初始化子线程的时候,会从父线程拷贝ThreadLocal数据。
/**
* @author 一灯架构
* @apiNote ThreadLocal示例
**/
public class ThreadLocalDemo {
// 1. 创建可被子线程继承数据的ThreadLocal
static ThreadLocal<String> threadLocal = new InheritableThreadLocal<>();
public static void main(String[] args) {
// 2. 给ThreadLocal赋值
threadLocal.set("关注公众号:一灯架构");
// 3. 启动一个子线程,看是否能获取到主线程数据
new Thread(() -> {
System.out.println(threadLocal.get()); // 输出 关注公众号:一灯架构
}).start();
}
}
我是「一灯架构」,如果本文对你有帮助,欢迎各位小伙伴点赞、评论和关注,感谢各位老铁,我们下期见