吃透Java并发六:ThreadLocal

一、ThreadLocal简介

ThreadLocal 用一种存储变量与线程绑定的方式,在每个线程中用自己的 ThreadLocalMap 安全隔离变量,为解决多线程程序的并发问题提供了一种新的思路。ThreadLocal不是为了解决多线程访问共享变量,而是为每个线程创建一个单独的变量副本,提供了保持对象的方法和避免参数传递的复杂性。它采用采用空间来换取时间的方式,解决多线程中相同变量的访问冲突问题。

在ThreadLocal类中有一个静态内部类ThreadLocalMap(其类似于Map),用键值对的形式存储每一个线程的变量副本,ThreadLocalMap中元素的key为当前ThreadLocal对象,而value对应线程的变量副本,每个线程可能存在多个ThreadLocal。而ThreadLocalMap实例则是在线层Thread类中的成员变量,每一个线程有单独自己的ThreadLocalMap,通过此变量来存储多个ThreadLocal(Key)与其对应的值。

简单介绍一下,下面看一个例子就会明白:

创建两个ThreadLocal变量threadLocal1和threadLocal2,分别在三个线程中把threadLocal变量值为1,2,3,4,5,6 如下代码。

public class MyTest {
    static ThreadLocal<Integer>

猜你喜欢

转载自blog.csdn.net/u013277209/article/details/103321178