1,ThreadLocalMap是ThreadLocal的静态内部类,Thread类中包含一个ThreadLocalMap类型的成员变量。
2,ThreadLocalMap实现原理类似于HashMap差不多,通过hashCode命中对应的ThreadLocal。
3,Thread、ThreadLocalMap、ThreadLocal对象之间的对应关心
一对一(Thread持有一个ThreadLocalMap属性),一对多(ThreadLocalMap中的每一个key都是ThreadLocal对象)
4,ThreadLocalMap对象对ThreadLocal是弱引用,一旦ThreadLocal对象被垃圾回收器回收。
5,ThreadLocal负责管理ThreadLocalMap,包括插入,删除 等等。
为什么在ThreadLocalMap 中弱引用ThreadLocal对象呢,当然是从线程内存管理的角度出发的。
使用弱引用,使得ThreadLocalMap知道ThreadLocal对象是否已经失效,一旦该对象失效,也就是成为垃圾,那么它所操控的Map里的数据也就没有用处了,因为外界再也无法访问,进而决定插除Map中相关的值对象,Entry对象的引用,来保证Map总是保持尽可能的小。
总之,线程通过ThreadLocal 来给自己的map 添加值,删除值。同时一旦ThreadLocal本身成为垃圾,Map也能自动清除该ThreadLocal所操控的数据。
参考文章:
http://blog.csdn.net/liang_love_java/article/details/50554837
http://www.verydemo.com/demo_c89_i5278.html
相关推荐
Java并发编程学习之ThreadLocal源码详析 ThreadLocal是Java并发编程中的一种机制,用于解决多线程访问共享变量的问题。它可以使每个线程对共享变量的访问都是线程安全的,使得多线程编程变得更加简单。 ...
总结起来,ThreadLocal和Spring的事务管理是Java开发中解决并发问题和保证数据一致性的重要手段。熟练掌握这两个概念,有助于构建稳定、高效的分布式系统。通过深入学习源码和实际应用,我们可以更好地理解其工作...
总结起来,"Hibernage_Session_Manager_ThreadLocal"是一个关于使用ThreadLocal在多线程环境中优化Hibernate Session管理的技术实践,通过这种方式可以提升应用程序的性能和安全性。`HibernateUtil.java`是实现这一...
Java单线程ThreadLocal串值问题解决方案主要介绍了Java单线程ThreadLocal串值问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。 ThreadLocal简介 ThreadLocal是Java中...
总结起来,ThreadLocal提供了一种在多线程环境中安全存储线程局部变量的机制,通过弱引用避免内存泄漏,以及使用开放地址法处理哈希冲突。理解ThreadLocal的原理和源码对于开发高并发的Java应用至关重要,因为它可以...
1. **减少参数传递**:当一个对象需要在多个方法或者多个线程之间共享,但又不想通过参数传递时,可以使用ThreadLocal。例如,在上述描述中,`Parameter` 类的静态`ThreadLocal` 实例允许模块A初始化后,模块B和模块...
本学习总结将深入探讨Java的基础、并发编程、JVM优化、数据库管理(如MySQL)、缓存技术(如Redis)、框架(如Spring和MyBatis)以及消息队列(如RocketMQ)等多个关键领域。 1. **Java基础**:Java的基础知识涵盖...
这篇PDF文档,"Java学习路线总结,搬砖工逆袭Java架构师(全网最强)(csdn)",提供了全面的学习路径,旨在帮助Java初学者到进阶者逐步提升技能。 首先,JavaSE(Java标准版)是所有Java学习的基础,它涵盖了Java...
在IT行业中,多线程是实现高...总结来说,多线程基础部分的学习涵盖了线程创建、线程状态、线程同步、ThreadLocal的使用以及并发编程的高级概念。通过深入理解这些内容,开发者可以编写出更加高效、稳定的多线程程序。
1. **学习面试题** 首先,阅读并理解各类Java面试题至关重要。这有助于巩固基础知识,如Java基础语法、集合框架、多线程等。推荐的资料包括《Java面试题全集(上)》和各大公司的后端开发面试题总结,它们通常涵盖...
传智博客的JAVA基础笔记个人总结是一份全面的学习资源,旨在帮助初学者或有一定基础的开发者巩固和提升Java编程技能。这份笔记是基于传智播客的课程内容,结合了牛牧老师和水镜老师的讲解精华,提供了27天的学习计划...
本项目“Java-Concurrent-Programming”是一个基于《Java并发编程艺术》这本书的学习总结,通过源码分析来深入理解并发编程的核心概念。 在Java中,线程是并发的基础,`Thread`类提供了创建和管理线程的基本功能。...
总结,这个压缩包提供的499篇文章覆盖了Java的各个方面,从基础到高级,从理论到实践,是全面学习Java的好资料。"爱书吧 电子书 教程 让更多人 读更多的书.url"这个链接可能指向一个书籍分享平台,可以作为辅助学习...
1. **编译阶段**:使用JDK中的`javac`命令将`.java`源代码文件编译成`.class`字节码文件。 2. **运行阶段**:通过JRE中的JVM解释执行字节码文件。 #### 四、环境配置与开发工具 - **环境变量设置**: - `JAVA_...
线程本地存储,如 `ThreadLocal` 类,提供了线程安全的数据结构,使得每个线程拥有自己的副本,避免了数据竞争问题。 #### 四、Java线程:线程状态的转换 - **线程的状态** Java线程的状态包括新建 (`NEW`)、...
面试真题目录大全详细版 本资源摘要信息涵盖了 Java、大数据、Redis...本资源摘要信息涵盖了广泛的知识领域,涵盖了大数据、缓存、数据库、线程安全、日志、机器学习等多个方面,可以作为面试备战和知识点总结的参考。
9. 使用线程局部变量(ThreadLocal):ThreadLocal类可以帮助我们为不同的线程创建独立的变量副本。这对于线程安全和避免同步是很有帮助的。 在文档中,尽管提到了通过OCR扫描技术识别出文档的部分文字,并可能存在...
在学习Java的过程中,许多初学者可能会忽略一些关键的细节,这些细节往往会在...持续深入学习,不断实践和总结,才能真正掌握这门语言。阅读和记录读书笔记,是提高学习效率的有效方式,希望我的笔记能对你有所帮助。
- **线程局部变量**:通过`ThreadLocal`类来隔离不同线程中的变量副本,从而避免线程安全问题。 ### 总结 本文从多线程的基础概念出发,深入探讨了Java中多线程的实现机制及线程安全问题,并介绍了几种常见的设计...