美文网首页
Java——什么是ThreadLocal

Java——什么是ThreadLocal

作者: 含泪若笑 | 来源:发表于2019-07-09 11:18 被阅读0次

    Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。

    所以ThreadLocal的应用场合,最适合的是按线程多实例(每个线程对应一个实例)的对象的访问,并且这个对象很多地方都要用到。

    秘密就就在于上述叙述的ThreadLocalMap这个类。ThreadLocalMap是ThreadLocal类的一个静态内部类,它实现了键值对的设置和获取(对比Map对象来理解),每个线程中都有一个独立的ThreadLocalMap副本,它所存储的值,只能被当前线程读取和修改。ThreadLocal类通过操作每一个线程特有的ThreadLocalMap副本,从而实现了变量访问在不同线程中的隔离。因为每个线程的变量都是自己特有的,完全不会有并发错误。还有一点就是,ThreadLocalMap存储的键值对中的键是this对象指向的ThreadLocal对象,而值就是你所设置的对象了。

    我参考的文章,可以细读的:

    https://vence.github.io/2016/05/28/threadlocal-info/

    https://blog.csdn.net/lufeng20/article/details/24314381

    相关文章

      网友评论

          本文标题:Java——什么是ThreadLocal

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