`

ThreadLocal---线程本地变量

 
阅读更多

This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get or set method) has its own, independently initialized copy of the variable. ThreadLocal instances are typically private static fields in classes that wish to associate state with a thread (e.g., a user ID or Transaction ID).

For example, the class below generates unique identifiers local to each thread. A thread's id is assigned the first time it invokes UniqueThreadIdGenerator.getCurrentThreadId() and remains unchanged on subsequent calls.

先看两个例子:

1.

结果:

Thread-0:2
Thread-0:3
Thread-1:2
Thread-1:5
Thread-1:6
Thread-1:7
Thread-1:8
Thread-0:4
Thread-0:9
Thread-0:10
10------

2.

结果:

Thread-1:1
Thread-1:2
Thread-1:3
Thread-1:4
Thread-1:5
Thread-0:1
Thread-0:2
Thread-0:3
Thread-0:4
Thread-0:5
0------

从以上两个例子看出: ThreadLocal为每个线程创建一个ThreadLocal<Integer> a我副本,每个线程各自操作自己的那个副本, 不会影响其它线程的副本......

分享到:
评论

相关推荐

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

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

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

    为了解决这个问题,我们可以使用线程局部变量(ThreadLocal)或者通过同步机制如synchronized关键字来实现线程间的数据隔离。 1. **线程内的数据共享与对象独立**: 在例子中,使用了HashMap来存储每个线程的数据...

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

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

    多线程线程变量赋值

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

    java线程本地变量ThreadLocal详解

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

    java基础--11.多线程

    - ThreadLocal为每个线程都提供了一个独立的变量副本,不同线程无法访问彼此的副本,保证了数据的安全性。 8. **死锁(Deadlock)** - 当两个或更多线程相互等待对方释放资源而陷入僵局时,就发生了死锁。避免...

    ThreadLocal

    ThreadLocal是Java编程语言中的一个类,用于在多线程环境中提供线程局部变量。它是一种特殊类型的变量,每个线程都有自己的副本,互不影响,从而实现线程间数据隔离。ThreadLocal通常被用来解决线程共享数据时可能...

    基于Java的源码-超简单Java多线程填表源码.zip

    - `ThreadLocal`提供线程局部变量,每个线程都有自己的副本,互不影响,常用于存储线程相关的上下文信息。 10. **线程中断**: - `Thread.interrupt()`方法用于中断线程,被中断的线程会抛出`...

    ThreadLocal应用示例及理解

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

    ThreadLocal相关

    在多线程环境下,ThreadLocal 变量可以保证各个线程的变量相对独立于其他线程内的变量。这种机制可以帮助开发者在多线程环境下编写更加简洁、可维护的代码。 ThreadLocal 的作用 ThreadLocal 的主要作用是提供线程...

    ThreadLocal原理及在多层架构中的应用

    **线程局部变量(ThreadLocal)是Java编程中一个非常重要的概念,主要用于在多线程环境中为每个线程提供独立的变量副本。ThreadLocal不是一种数据结构,而是一种解决线程间共享数据的方式,它提供了线程安全的局部...

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

    - 使用`ThreadLocal`存储线程私有数据,避免全局变量的干扰。 理解并掌握Java多线程下变量共享的原理和解决方案,有助于编写出高效、稳定的并发程序。在实际开发中,应结合具体业务场景选择合适的同步机制,以达到...

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

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

    局部变量线程安全测试

    测试可能包括对局部变量的读写操作,以及涉及到同步机制如synchronized关键字,volatile修饰符,或者是使用ThreadLocal等技术来确保线程安全。 在标签中,“局部变量”、“线程”、“安全”、“测试”和“源码”是...

    java事务 - threadlocal

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

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

    在这个例子中,`ThreadLocalTest`类中的`threadLocal`变量为每个线程初始化一个随机值,并且`increament()`方法会增加当前线程的`ThreadLocal`变量的值。由于每个线程都有自己的副本,因此不会发生数据竞争。 总结...

    ThreadLocal的用处

    ThreadLocal是Java编程语言中的一个强大工具,它主要用于在多线程环境中为每个线程提供独立的变量副本。这个机制确保了线程之间的数据隔离,避免了共享状态带来的并发问题,提高了程序的安全性和效率。ThreadLocal是...

    Java资料-详解ThreadLocal

    然而,有时我们希望在类中定义一个变量,让它具有线程局部性,即每个线程都有一份独立的副本,这时就轮到`ThreadLocal`登场了。 `ThreadLocal`在Java中是一个非常重要的工具类,它为每个线程提供了单独的变量副本,...

    Java并发编实践之ThreadLocal变量.doc

    ThreadLocal不是代表一个线程实例,而是一种线程局部变量的机制,它为每个线程提供了一个独立的变量副本,各个线程可以独立地修改自己的副本,互不影响。这种设计模式有助于解决多线程环境下的数据隔离问题,避免了...

Global site tag (gtag.js) - Google Analytics