美文网首页
ThreadLocal详解

ThreadLocal详解

作者: 山海树 | 来源:发表于2020-06-30 11:07 被阅读0次

ThreadLocal

内置静态内部类ThreadLocalMap

ThreadLocalMap中Entry<ThreadLocal<?>tl ,Object o>,其中tl为弱引用,是为了方便当ThreadLocal过期是,gc回收ThreadLocalMap,避免内存泄漏。

当ThreadLocal.set(Object value)时,会获取当前线程Thread.currentThread()。拿到当前线程持有的ThreadLocalMap,将ThreadLocal作为key,value作为值,存储起来。

当ThreadLcal.get()时,同样会获取当前线程Thread.currentThread()。拿到当前线程的ThreadLocalMap,通过get(this),来拿到存储的值。其中this就是ThreadLocal对象。

也就是说,同一个线程中,同一个ThreadLocal只能有一个值,但是反过来,同一个ThreadLocal可以存多个Thread的值

InheritableThreadLocal 

在多线程的情况下,主线程中new的线程称为子线程,当需要将主线程的值传到子线程时,可以使用InhreitableThreadLocal来实现。

InhreitableThreadLocal是extend ThreadLocal的一个类,他的实现原理就是使用Thread的inhreitableThreadLocals属性,也就是另一个ThreadLocalMap变量。

当在主线程中实例化子线程时(new Thread()),会调用Thread的init方法,该方法中会判断父线程的inheritableThreadLocals是否为空,不为空则将该值赋值给子线程的inheritableThreadLocals属性。

父子线程通过inheritableThreadLocals来实现值得传递

TransmittableThreadLocal

目前看不懂
https://www.cnblogs.com/hama1993/p/10409740.html

相关文章

  • ThreadLocal和InheritableThreadLoc

    ThreadLocal详解 - 简书 InheritableThreadLocal详解 - 简书 ThreadLo...

  • InheritableThreadLocal详解

    1、简介 在上一篇 ThreadLocal详解 中,我们详细介绍了ThreadLocal原理及设计,从源码层面上分...

  • ThreadLocal 详解

    ThreadLocal 详解 1. 前言 ThreadLocal是java线程中的局部变量,变量作用域仅在当前线程...

  • ThreadLocal详解

    1、简介 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Th...

  • ThreadLocal详解

    ThreadLocal之前我认为就是内部维护了一个ThreadLocalMap其中key为当前线程(Thread....

  • ThreadLocal详解

    介绍 顾名思义这个类提供线程局部变量每个线程(通过其get或set方法)都有自己独立初始化的变量副本 Thread...

  • ThreadLocal 详解

    ThreadLocal,我们一般称之为线程的局部变量,或者是线程的本地变量。很多人认为他与多线程的同步机制相关,其...

  • ThreadLocal详解

    ThreadLocal在java.lang包中,其主要作用是提供一个和线程绑定的变量环境,即通过ThreadLoc...

  • ThreadLocal详解

    ThreadLocal说明 ThreadLocal是一个线程内部的数据存储类,使用它来保存数据,只有当前的线程才可...

  • ThreadLocal详解

    ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量。 这个玩意有什么用处,或者说为什么要有这么一个...

网友评论

      本文标题:ThreadLocal详解

      本文链接:https://www.haomeiwen.com/subject/okbtqktx.html