吃透Java并发六:ThreadLocal
Posted 吃透Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吃透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
以上是关于吃透Java并发六:ThreadLocal的主要内容,如果未能解决你的问题,请参考以下文章