深入浅出Java并发编程指南「源码分析篇」透析ThreadLocal线程私有区域的运作机制和源码体系

Posted 浩宇の天尚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入浅出Java并发编程指南「源码分析篇」透析ThreadLocal线程私有区域的运作机制和源码体系相关的知识,希望对你有一定的参考价值。

每日一句

一个人的成功不取决于他的智慧,而是毅力。

基本介绍

  • ThreadLocal是对Thread内部的局部变量ThreadLocalMap的维护类当线程持有多个ThreadLocal的操作时,会在ThreadLocalMap中通过key进行寻找。

  • 每个Thread里面维护了一个ThreadLocal.ThreadLocalMap变量,底层存储结构为Entry[],ThreadLocal实例作为ThreadLocalMap的key,set/get的值为Map的value,其中,key的引用为弱引用

  • 当执行ThreadLocal.set时,实际是将ThreadLocal对象和值通过key-value的形式放进了Thread中的ThreadLocal.ThreadLocalMap属性中,完成了线程隔离存储,保证了线程安全,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。

使用场景

  • ThreadLocal即便你没有直接用到过,它也间接的出现在你使用过的框架里:

    1. Spring的事务管理
    2. Hibernate的会话管理
    3. logback(和log4j)中的MDC功能实现等

以上是关于深入浅出Java并发编程指南「源码分析篇」透析ThreadLocal线程私有区域的运作机制和源码体系的主要内容,如果未能解决你的问题,请参考以下文章

深入浅出学习透析Nginx服务器的基本原理和配置指南「Keepalive性能分析实战篇」

深入浅出Java并发编程指南「原理分析篇」深入分析AQS的工作原理(前传)

深入浅出Java并发编程指南「原理分析篇」非常全面的的探索和分析AQS的基本原理和实现机制(道法器术篇)

深入浅出Java并发编程指南「原理分析篇」从底层分析LockSupport原理机制体系

深入浅出Java并发编程指南「原理分析篇」底层角度去分析线程的实现原理

深入浅出Java并发编程指南「源码原理系列」让我们一起探索一下CyclicBarrier的技术原理和源码分析