美文网首页
ThreadLocal类

ThreadLocal类

作者: Lamour_a9c8 | 来源:发表于2019-03-19 19:14 被阅读0次

     原理分析:ThreadLocal提供了get与set等访问接口或方法,这些方法为每个使用该变量的线程创建一个副本,即每个线程内部都会有一个该变量,且在线程内部任何地方都可以使用,线程之间互不影响,这样一来就不存在线程安全问题,也不会严重影响程序执行性能。

              1)实际的通过ThreadLocal创建的副本是存储在每个线程自己的threadLocals中的;

             2)为何threadLocals的类型ThreadLocalMap的键值为ThreadLocal对象,因为每个线程中可有多个threadLocal变量,就像上面代码中的longLocal和stringLocal;

               3)在进行get之前,必须先set,否则会报空指针异常;

            如果想在get之前不需要调用set就能正常访问的话,必须重写initialValue()方法。

              用来解决数据库连接、Session管理

        使用场景:高并发,以空间换取时间,可以减少锁竞争。

    ThreadLocal类可以更规范的维持线程的封闭性,这个类使线程中的某个值与保存的对象关联起来。

     1. 何时使用ThreadLocal类及注意事项

    当某个频繁执行的操作需要一个临时对象,例如一个缓冲区,而同时又希望避免在每次执行时都重新分配该临时对象。ThreadLocal变量类似于全局变量,它能降低代码的可重用性。

    相关文章

      网友评论

          本文标题:ThreadLocal类

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