• Thread Local


    1、ThreadLocal 是什么 ?有什么用 ?

    为本地线程生成共享变量副本的工具类。CopyValueIntoEveryThread

    主要作用:同一线程中做到跨类,跨方法传递数据,而不用传递参数和依靠返回值

    具体实现:

    1. 定义全局的 ThreadLocal对象 ,变量记作 tl
    2. 共享变量
    3. 线程内调用 tl的方法,tl会为当前线程创建ThreadLocalMap对象(如果不存在),变量记作 map
    4. map创建Entry对象,存储键值对,keytl变量副本 value是初始化值(shared副本

    每个线程创建自己的 ThreadLocalMap相互不干扰,而又共享了 全局变量

    2、Thread Local 副作用

    会产生内存泄露

    tl强引用指向 ThreadLocal实例对象mapEntrykey(记作t1变量副本)弱引用指向 ThreadLocal实例对象

    1. t1的指向断开,如果t1变量副本还是强引用,ThreadLocal实例对象,无法回收,会造成内存泄漏。
    2. 使用 弱引用 还可能造成内存泄漏,即使 key==null,Entry对象还存在,value没有被回收,造成内存泄漏,每次都要 remove,清除 Entry

  • 相关阅读:
    North North West
    HDU-5387 Clock
    HDU-1036 Average is not Fast Enough!
    Growling Gears
    HDU-5375 Gray code
    HDU-5373 The shortest problem
    hdu-5364 Distribution money
    UVA
    HDU-5363 Key Set
    HDU-5326 Work
  • 原文地址:https://www.cnblogs.com/sweetorangezzz/p/13516054.html
Copyright © 2020-2023  润新知