`
younglibin
  • 浏览: 1214319 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

多线程成员变量-ThreadLocal

 
阅读更多

 

 

private ThreadLocal<String> threadLocal = new ThreadLocal<String>();

 

对于不同的线程设置值即可:

 调用 :

set(T value)

          将此线程局部变量的当前线程副本中的值设置为指定值。

          

获得值  调用:

 

get()

          返回此线程局部变量的当前线程副本中的值。

 

 

这样得到的就是当前这个线程的 设置的值 !而不会出现 值覆盖问题;

 

 

 

 

首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。

 

另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作来创建的对象,每个线程创建一个,不是什么对象的拷贝或副本。通过ThreadLocal.set()将这个新创建的对象的引用保存到各线程的自己的一个map中,每个线程都有这样一个map,执行ThreadLocal.get()时,各线程从自己的map中取出放进去的对象,因此取出来的是各自自己线程中的对象,ThreadLocal实例是作为map的key来使用的。

 

如果ThreadLocal.set()进去的东西本来就是多个线程共享的同一个对象,那么多个线程的ThreadLocal.get()取得的还是这个共享对象本身,还是有并发访问问题。

 

分享到:
评论

相关推荐

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

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

    java事务 - threadlocal

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

    Quartz-ThreadLocal.rar

    ThreadLocal 是 Java 中的一个重要工具类,用于在多线程环境中为每个线程维护独立的变量副本。这个压缩包 "Quartz-ThreadLocal.rar" 内含的学习资源很可能是关于如何在 Quartz 调度器中结合使用 ThreadLocal 的示例...

    多线程线程变量赋值

    本话题聚焦于“多线程线程变量赋值”,讨论如何在不通过参数传递的情况下,为线程变量直接赋值。 首先,我们需要理解线程变量(Thread Local Variables)的概念。线程变量,也称为线程局部变量,是一种特殊类型的...

    ThreadLocal 线程本地变量 及 源码分析.rar_开发_设计

    ThreadLocal是Java编程语言中的一个类,用于在多线程环境下提供线程局部变量。它为每个线程创建了一个独立的变量副本,每个线程只能访问自己的副本,不会影响其他线程。这种机制有助于实现线程安全,尤其在需要线程...

    Spring事务处理-ThreadLocal的使用

    在实际应用中,理解ThreadLocal在Spring事务处理中的作用有助于优化并发性能和解决多线程环境下的事务问题。例如,如果线程之间需要共享数据,但又不想影响其他线程,ThreadLocal就是一个理想的选择。同时,也要注意...

    java多线程_java多线程下变量共享_

    在多线程环境中,变量共享是一个常见的需求,但也是引发问题的关键点。本篇文章将深入探讨Java多线程下变量共享的问题以及解决策略。 在Java中,线程共享变量可以通过两种方式实现:静态成员变量和实例成员变量。...

    java核心知识点学习----多线程间的数据共享和对象独立,ThreadLocal详解.pdf

    Java中的多线程编程是开发高并发应用的关键技术之一,涉及到如何有效管理和利用系统资源,尤其是在处理并发数据访问时,确保数据的安全性和一致性至关重要。在Java中,有多种方式可以实现线程间的数据共享和对象独立...

    ThreadLocal应用示例及理解

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

    ThreadLocal

    ThreadLocal是Java编程语言中的一个类,用于在多线程环境中提供线程局部变量。它是一种强大且实用的工具,可以确保每个线程都拥有自己的独立变量副本,从而避免了传统共享变量带来的线程安全问题。这篇博文将深入...

    多线程精品资源--领课教育系统(roncoo-education)是基于领课网络多年的在线教育平台开发和运营经验打造.zip

    8. 线程安全:对于共享资源,需要确保线程安全,如使用Atomic类、线程局部变量(ThreadLocal)等。 综上所述,roncoo-education项目很可能包含多线程设计和实现的复杂性,通过合理的线程管理,实现高效、稳定、可...

    JAVA并发-自问自答学ThreadLocal.pdf

    【ThreadLocal】是Java编程语言中用于处理线程局部变量的一个工具类,它提供了一种在多线程环境中实现线程安全的局部变量的方式。在Java的并发编程中,ThreadLocal是一个非常重要的概念,它可以帮助我们创建独立于...

    Java多线程与线程安全实践-基于Http协议的断点续传

    在Java编程中,多线程是一项关键特性,它允许程序同时执行多个任务,极大地提高了效率。在本项目“Java多线程与线程安全实践-基于Http协议的断点续传”中,我们将深入探讨如何利用Java的多线程机制实现HTTP协议下的...

    Java多线程 之 临界区、ThreadLocal.docx

    总结来说,Java中的临界区通过`synchronized`关键字或Lock对象来保证多线程环境下的数据一致性,而ThreadLocal则通过为每个线程提供变量的独立副本,避免了共享资源的并发问题。在实际编程中,开发者需要根据具体...

    java线程本地变量ThreadLocal详解

    ThreadLocal 是 Java 中的一个类,提供了线程安全的对象封装,用于解决多线程访问数据的冲突问题。ThreadLocal 的主要目的是为每个线程提供一个变量副本,从而隔离了多个线程访问数据的冲突。 ThreadLocal 的使用...

    java8-threadlocal

    - **线程安全的数据共享**:在多线程环境中,通过 ThreadLocal 存储的数据是线程隔离的,每个线程都有自己的独立副本,减少了锁的使用,提高了性能。 - **HTTP 请求上下文**:在 Web 应用中,ThreadLocal 常用来...

    Java多线程程序设计-JSP教程,Java技巧及代码

    Java多线程程序设计是Java开发中的重要概念,它允许在一个程序中同时执行多个任务,提高了应用程序的效率和响应性。在Java中,有两种主要的方式来实现多线程:继承Thread类和实现Runnable接口。 首先,我们要理解多...

    Java多线程与线程安全实践-基于Http协议.zip

    在Java编程中,多线程和线程安全是核心概念,尤其在开发高效、响应迅速的应用时至关重要。本实践教程将深入探讨如何在基于HTTP协议的环境中应用这些概念。我们将从基础理论开始,逐步深入到实际操作,通过具体的示例...

    JAVA多线程编程详解-详细操作例子

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,提升系统效率。在Java中,实现多线程主要有两种方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当自定义一个类继承自Thread...

Global site tag (gtag.js) - Google Analytics