当前位置: 首页 > 网络应用技术

本地变量的本地变量的sentaritableThreadLocal继承线

时间:2023-03-06 23:47:44 网络应用技术

  在上一个ThreadLocal的文章中:线程局部的源代码分析和内存泄漏的原理。我们知道每个线程都有用于存储本地变量的threadLocals属性。

  当然,如果我们的眼睛足够好,则可以在线程类的属性下找到类似的属性。什么是变量,是什么?

  实际上,此属性用于实现线程的本地变量的继承:创建时从父线程继承的局部变量。InherItableTheThreadLocals主要存储可以自动传递到Sub--的线程laceLocalMap。线。他还对应一个类:sashitablethreadLocal。

  在HreadLocal文章的第一种情况下,在父螺纹中设置后的子线程中未在子线程中获得相同的螺纹局部变量。这应该是正常的,因为当前线程是在sub-中调用get方法时的螺纹线程。线程线程,设置方法用于设置线程变量是主线程,两个是不同的线程,并且在访问过程中返回天然潜艇。

  但是,可能有些企业需要获取父线程的数据,因此有什么方法可以允许子线程访问父线程的值?答案是,这是sashitiitablethreadLocal。

  公共类sashitablethreadLocal< T > 扩展螺纹网< T >

  sashitablethreadLocal从ThreadLocal继承,并且保留本地变量的本地变量的集合也是ThreadLocalMap。但是它添加了一个功能,以允许子线程访问parent thread中设置的本地变量。

  sentaritableThreadLocal类的源代码非常小,并且将螺纹插座的三个函数重写。它也是此类的源代码:

  传输数据的原理还始于创建线程!实际上,如果未指定,子线程的许多属性将继承它们的属性,例如线程组,Guardian/user -user线程属性,线程上下文对象等。

  RasenitableThreadLocal类重写了三种方法:

  当在父螺纹中创建子线程时,构造函数将在父螺纹变量(浅克克隆)中保存局部变量在婴儿线程的sentaritablethreadLocals变量中。

  sashitablethreadLocal传输数据的情况:

  结果:

  可以看出,子线程可以正常获得父螺纹的局部变量的值。

  SentarItableThreadLocal通常用于调用链接跟踪。

  如果您不理解或不需要交流,可以发出消息。此外,我想喜欢,收集和关注,我将继续更新各种Java学习博客!