美文网首页thunisoft成长快乐!
ThreadLocal的个人理解

ThreadLocal的个人理解

作者: cmlong_ | 来源:发表于2016-12-10 21:37 被阅读16次

    今天ImportNew看了一篇文章,提到了ThreadLocal,引起了我的好奇心。对ThreadLocal进行了些许了解,在此总结一下。

原理

    Thread类中有有一个成员变量ThreadLocal.ThreadLocalMap,是ThreadLocal的内部类。ThreadLocal对象通过当前Thread对象,向Thread对象中的ThreadLocalMap对象put值,key是ThreadLocal对象。源码很简单,Thread和ThreadLocal稍微看一下就理解了。因此,通过ThreadLocal Put值的时候,实际上是往每一个Thread对象中的ThreadLocalMap放了一遍。

    通过原理也可以看出通过ThreadLocal Put的值实际上是存在了Thread的ThreadLocalMap中,它是与Thread有相同生命周期的。

使用场景

    举例:两个线程,各自访问各自的实例(比如session),并且这两个两个线程在执行的过程中需要用到很多对象,这些对象的很多地方都用到了session。(用例不好,个人认为理解道理就可以了)

总结

    1.每个线程都有自己的ThreadLocalMap,存放自己的对象,与其它线程无关

    2.将ThreadLocal作为Key,将不同的对象的引用放入到不同的线程的ThreadLocalMap中,降低了对象传递的麻烦。

误区纠正

    之前看到文章说是ThreadLocal是用来解多线程对象共享的问题的。其中有依据很经典的话“一个是锁机制进行时间换空间,一个是存储拷贝进行空间换时间”。这句话本身是没有问题的,但是作者认为ThreadLocal对对象进行了拷贝,其实并不是这样的,而是为每个线程创建了一个对象引用,如果创建的引用是不变的话,还是解决不了多线程对象共享的问题。

相关文章

  • ThreadLocal的个人理解

    今天ImportNew看了一篇文章,提到了ThreadLocal,引起了我的好奇心。对ThreadLocal进...

  • ThreadLocal

    理解ThreadLocal 理解ThreadLocal的关键在于理解 Thread, threadLocals, ...

  • ThreadLocal的使用事例

    列举几个使用ThreadLocal的事例,能更好的理解ThreadLocal。 1、运用ThreadLocal实现...

  • 14-ThreadLocal类详细剖析

    ThreadLocal类详细剖析 对ThreadLocal的理解 JDK中的源码是这样描述ThreadLocal的...

  • ThreadLocal 深度解析

    一.对ThreadLocal的理解二.深入解析ThreadLocal类三.ThreadLocal的应用场景 对Th...

  • ThreadLocal源码分析

    1.对ThreadLocal的理解 ThreadLocal是一个创建线程局部量的类。使用ThreadLocal创建...

  • ThreadLocal的理解

    老板提了一个需求,需要我们在某个类中增加一个String成员变量name,好的,没问题 然后老板又提了一个需求,需...

  • ThreadLocal的理解

    1.ThreadLocal是什么? 首先介绍Thread类中属性threadLocals:image.png我们发...

  • ThreadLocal理解

    一、ThreadLocal的作用 ThreadLocal以线程作为作用域,针对每个线程维护他们自己的数据。每个线程...

  • ThreadLocal理解

    a

网友评论

    本文标题:ThreadLocal的个人理解

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