`

ThreadLocal学习总结(1)

阅读更多

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源码详析

    Java并发编程学习之ThreadLocal源码详析 ThreadLocal是Java并发编程中的一种机制,用于解决多线程访问共享变量的问题。它可以使每个线程对共享变量的访问都是线程安全的,使得多线程编程变得更加简单。 ...

    从ThreadLocal的使用到Spring的事务管理

    总结起来,ThreadLocal和Spring的事务管理是Java开发中解决并发问题和保证数据一致性的重要手段。熟练掌握这两个概念,有助于构建稳定、高效的分布式系统。通过深入学习源码和实际应用,我们可以更好地理解其工作...

    Hibernager_Session_Manager_ThreadLocal

    总结起来,"Hibernage_Session_Manager_ThreadLocal"是一个关于使用ThreadLocal在多线程环境中优化Hibernate Session管理的技术实践,通过这种方式可以提升应用程序的性能和安全性。`HibernateUtil.java`是实现这一...

    Java单线程ThreadLocal串值问题解决方案

    Java单线程ThreadLocal串值问题解决方案主要介绍了Java单线程ThreadLocal串值问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。 ThreadLocal简介 ThreadLocal是Java中...

    深入学习java ThreadLocal的源码知识

    总结起来,ThreadLocal提供了一种在多线程环境中安全存储线程局部变量的机制,通过弱引用避免内存泄漏,以及使用开放地址法处理哈希冲突。理解ThreadLocal的原理和源码对于开发高并发的Java应用至关重要,因为它可以...

    深入浅出的学习Java ThreadLocal

    1. **减少参数传递**:当一个对象需要在多个方法或者多个线程之间共享,但又不想通过参数传递时,可以使用ThreadLocal。例如,在上述描述中,`Parameter` 类的静态`ThreadLocal` 实例允许模块A初始化后,模块B和模块...

    编程学习总结 包括 Java基础、Java并发、JVM、MySQL、Redis、Spring、MyBatis、RocketMQ

    本学习总结将深入探讨Java的基础、并发编程、JVM优化、数据库管理(如MySQL)、缓存技术(如Redis)、框架(如Spring和MyBatis)以及消息队列(如RocketMQ)等多个关键领域。 1. **Java基础**:Java的基础知识涵盖...

    Java学习路线总结,搬砖工逆袭Java架构师(全网最强)(csdn)————程序.pdf

    这篇PDF文档,"Java学习路线总结,搬砖工逆袭Java架构师(全网最强)(csdn)",提供了全面的学习路径,旨在帮助Java初学者到进阶者逐步提升技能。 首先,JavaSE(Java标准版)是所有Java学习的基础,它涵盖了Java...

    多线程基础部分.md,学习代码

    在IT行业中,多线程是实现高...总结来说,多线程基础部分的学习涵盖了线程创建、线程状态、线程同步、ThreadLocal的使用以及并发编程的高级概念。通过深入理解这些内容,开发者可以编写出更加高效、稳定的多线程程序。

    Java面试总结~~~~.pdf

    1. **学习面试题** 首先,阅读并理解各类Java面试题至关重要。这有助于巩固基础知识,如Java基础语法、集合框架、多线程等。推荐的资料包括《Java面试题全集(上)》和各大公司的后端开发面试题总结,它们通常涵盖...

    传智博客JAVA基础笔记个人总结

    传智博客的JAVA基础笔记个人总结是一份全面的学习资源,旨在帮助初学者或有一定基础的开发者巩固和提升Java编程技能。这份笔记是基于传智播客的课程内容,结合了牛牧老师和水镜老师的讲解精华,提供了27天的学习计划...

    java源码总结-Java-Concurrent-Programming:java并发编程学习总结源码部分

    本项目“Java-Concurrent-Programming”是一个基于《Java并发编程艺术》这本书的学习总结,通过源码分析来深入理解并发编程的核心概念。 在Java中,线程是并发的基础,`Thread`类提供了创建和管理线程的基本功能。...

    java学习材料(499篇文章),JAVA教程

    总结,这个压缩包提供的499篇文章覆盖了Java的各个方面,从基础到高级,从理论到实践,是全面学习Java的好资料。"爱书吧 电子书 教程 让更多人 读更多的书.url"这个链接可能指向一个书籍分享平台,可以作为辅助学习...

    1.JavaSE基础学习笔记

    1. **编译阶段**:使用JDK中的`javac`命令将`.java`源代码文件编译成`.class`字节码文件。 2. **运行阶段**:通过JRE中的JVM解释执行字节码文件。 #### 四、环境配置与开发工具 - **环境变量设置**: - `JAVA_...

    java多线程编程总结

    线程本地存储,如 `ThreadLocal` 类,提供了线程安全的数据结构,使得每个线程拥有自己的副本,避免了数据竞争问题。 #### 四、Java线程:线程状态的转换 - **线程的状态** Java线程的状态包括新建 (`NEW`)、...

    面试真题目录大全,详细版

    面试真题目录大全详细版 本资源摘要信息涵盖了 Java、大数据、Redis...本资源摘要信息涵盖了广泛的知识领域,涵盖了大数据、缓存、数据库、线程安全、日志、机器学习等多个方面,可以作为面试备战和知识点总结的参考。

    java线程安全总结.pdf

    9. 使用线程局部变量(ThreadLocal):ThreadLocal类可以帮助我们为不同的线程创建独立的变量副本。这对于线程安全和避免同步是很有帮助的。 在文档中,尽管提到了通过OCR扫描技术识别出文档的部分文字,并可能存在...

    学习java的积点忽略之处

    在学习Java的过程中,许多初学者可能会忽略一些关键的细节,这些细节往往会在...持续深入学习,不断实践和总结,才能真正掌握这门语言。阅读和记录读书笔记,是提高学习效率的有效方式,希望我的笔记能对你有所帮助。

    自己总结的多线程

    - **线程局部变量**:通过`ThreadLocal`类来隔离不同线程中的变量副本,从而避免线程安全问题。 ### 总结 本文从多线程的基础概念出发,深入探讨了Java中多线程的实现机制及线程安全问题,并介绍了几种常见的设计...

Global site tag (gtag.js) - Google Analytics