java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java的ThreadLocal

Java线程中的ThreadLocal详细分析

作者:西二旗C罗

这篇文章主要介绍了Java线程中的ThreadLocal详细分析,ThreadLocal 提供线程的局部变量,每个线程都可以通过 get()和 set()对局部变量进行操作而不会对其他线程的局部变量产生影响,实现了线程之间的数据隔离,需要的朋友可以参考下

ThreadLocal简介

ThreadLocal 提供线程的局部变量,每个线程都可以通过 get() 和 set() 对局部变量进行操作而不会对其他线程的局部变量产生影响,实现了线程之间的数据隔离。

原理代码

ThreadLocal<String> tl = new ThreadLocal<>();
new Thread(()->{
    try {
        tl.set("你好");
        System.out.println(tl.get());
    } finally {
        tl.remove();
    }
},"线程1").start();
new Thread(()->{
    try {
        tl.set("我好");
        System.out.println(tl.get());
    } finally {
        tl.remove();
    }
},"线程2").start();

原理描述

Thread 和 ThreadLocal 中 ThreadLocalMap 的数据结构和关系 

ThreadLocalMap 中的 Key 是弱引用,这是为什么?

在这里插入图片描述

当引用 ThreadLocal 的方法结束的时候,此时 threadLocal 对象不再被使用,此时应该将 threadLocal 对象清除,假设 key 引用 threadLocal 对象的时候时强引用,则该对象不会被清除,因此要采用弱引用。

ThreadLoca l中的内存泄露问题,ThreadLocal 中最后为什么要加 remove 方法

到此这篇关于Java线程中的ThreadLocal详细分析的文章就介绍到这了,更多相关Java的ThreadLocal内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文