`

初看Java中ThreadLocal

阅读更多

最近学习Java的线程,接触了ThreadLocal,感觉还是有一些难度,所以上网查了一些资料。

ThreadLocal的作用是为每一个线程保存单独的变量副本,乍一看,似乎是又这样的实现:

每一个ThreadLocal的实体中维护了一个Map,当每个线程去调用threadLocal.set(T)方法时,似乎是把<Thread,Value>这样的一一对键值对放到了Map里,而且看了一些网上的资料也是这么解释的,但是经过查看源码,我发现这是错误的!

 

JDK中有这样的实现:

1.ThreadLocal中定义了内部类ThreadLocalMap ,它的Entry实现是继承自WeakReferences的()

2.这是整个设计的关键,真相是每一个Thead中有如下的局部变量定义

 


3.当调用ThreadLocal的set方法是,是把对应的线程的threadLocals变量中加入<ThreadLocal,Value>这样的键值对,也就是其实Thread享用的局部变量还是由本身来维护的。

 

 

以上是一点点发现,也没有太深入的去了解,希望大家多多指点!

分享到:
评论

相关推荐

    java中ThreadLocal详解

    ### Java中ThreadLocal详解 #### 一、ThreadLocal概述 在Java多线程编程中,`ThreadLocal`是一个非常重要的工具类,它提供了一种在每个线程内部存储线程私有实例的方法。通常情况下,当多个线程共享某个变量时,...

    Java中ThreadLocal的设计与使用

    Java中的ThreadLocal是一个非常重要的工具类,它在多线程编程中扮演着独特角色,用于为每个线程提供独立的变量副本。理解ThreadLocal的工作原理和使用方法对于编写高效、安全的多线程程序至关重要。 ### ...

    java中ThreadLocal类的使用

    Java中的`ThreadLocal`类是一个非常实用的工具,它提供了线程局部变量的功能。线程局部变量意味着每个线程都拥有自己独立的变量副本,互不干扰,这在多线程编程中尤其有用,可以避免数据共享带来的同步问题。下面...

    java事务 - threadlocal

    Java事务和ThreadLocal是两种在Java编程中至关重要的概念,它们分别用于处理多线程环境下的数据一致性问题和提供线程局部变量。 首先,我们来深入理解Java事务。在数据库操作中,事务是一系列操作的集合,这些操作...

    java 简单的ThreadLocal示例

    Java中的ThreadLocal是一个非常重要的工具类,它在多线程编程中扮演着独特角色,尤其在处理线程间数据隔离和共享时。ThreadLocal不是线程本身,而是为每个线程提供一个独立的变量副本,使得每个线程都可以独立地改变...

    java ThreadLocal多线程专属的变量源码

    java ThreadLocal多线程专属的变量源码java ThreadLocal多线程专属的变量源码java ThreadLocal多线程专属的变量源码java ThreadLocal多线程专属的变量源码java ThreadLocal多线程专属的变量源码java ThreadLocal多...

    java 中ThreadLocal 的正确用法

    java 中ThreadLocal 的正确用法 ThreadLocal 是 Java 中的一个特殊类,它可以让每个线程拥有自己独立的变量副本,避免了多线程之间的共享变量问题。下面我们将详细介绍 Java 中 ThreadLocal 的正确用法。 用法一...

    Java中ThreadLocal源码详细注释

    线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突...

    Java ThreadLocal详解_动力节点Java学院整理

    ThreadLocal是Java中的一种机制,可以将变量与线程关联起来,使得每个线程都可以拥有自己的变量副本。 ThreadLocal的出现是为了解决多线程编程中的线程安全问题。 从本质上说,ThreadLocal是一种存储机制,它可以在...

    java 中ThreadLocal实例分析

    "Java 中ThreadLocal实例分析" Java 中的 ThreadLocal 实例分析是指在多线程环境下,如何使用 ThreadLocal 来实现线程安全。ThreadLocal 是 Java 中的一种机制,用于在多个线程中实现变量的隔离。 在上面的代码中...

    使用Java ThreadLocal.docx

    Java中的ThreadLocal是一个非常有用的工具类,它提供了一种线程局部变量的机制。线程局部变量(ThreadLocal)的特点是每个线程都有其独立的副本,这些副本之间互不干扰,即使它们共享同一个ThreadLocal实例。这使得...

    JAVA ThreadLocal类深入

    Java中的ThreadLocal类是一种线程绑定机制,用于在多线程环境中为每个线程提供独立的变量副本,避免了线程间的数据共享带来的并发访问问题。ThreadLocal并不是一个线程对象,而是线程局部变量,即...

    深入理解 Java 之 ThreadLocal 工作原理1

    ThreadLocal是Java中用于线程局部变量的一个工具类,它的工作原理主要体现在如何在不同的线程之间隔离变量的副本,确保每个线程拥有自己的独立数据。这个设计模式在多线程编程中尤其有用,因为它避免了传统的同步...

    彻底理解Java中的ThreadLocal

    彻底理解Java中的ThreadLocal ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这...

    java的ThreadLocal[整理].pdf

    ThreadLocal是Java中一个非常重要的线程局部变量工具类,它的设计目的是为了解决多线程环境下各个线程之间的数据隔离问题。通过ThreadLocal,每个线程都可以拥有自己独立的变量副本,避免了多线程间的数据冲突和同步...

    ThreadLocal应用示例及理解

    **线程局部变量(ThreadLocal)是Java编程中一个非常重要的工具类,它在多线程环境下提供了线程安全的数据存储。ThreadLocal并不是一个变量,而是一个类,它为每个线程都创建了一个独立的变量副本,使得每个线程都...

    Java 中ThreadLocal类详解

    Java中的ThreadLocal类是一个强大的工具,它允许程序员创建线程局部变量。这意味着每个线程都有其自己独立的、不可见的变量副本,从而避免了线程间的数据共享问题,简化了多线程环境下的编程复杂性。ThreadLocal并不...

    简单分析Java线程编程中ThreadLocal类的使用共

    Java线程编程中的ThreadLocal类是一个非常重要的工具,它在多线程环境下提供了一种线程局部变量的机制。ThreadLocal并非是简单的变量,而是一种能够确保每个线程都拥有独立副本的变量容器。理解ThreadLocal的工作...

    彻底理解Java 中的ThreadLocal

    在Java中,ThreadLocal类提供了以下主要方法: 1. `void set(Object value)`:这个方法用于设置当前线程的线程局部变量的值。一旦设置了值,这个值将只对当前线程可见。 2. `Object get()`:返回当前线程所对应的...

    Java资料-详解ThreadLocal

    `ThreadLocal`在Java中是一个非常重要的工具类,它为每个线程提供了单独的变量副本,每个线程都可以独立地改变自己副本的值,而不会影响其他线程所对应的副本。`ThreadLocal`的全称是`java.lang.ThreadLocal`,它并...

Global site tag (gtag.js) - Google Analytics