浅解ThreadLocal

简介: 浅解ThreadLocal

我们知道的是synchronized能够解决线程安全中的内存可见性问题(让每个线程读取到的变量一致),而ThreadLocal恰好相反,它是让每个线程都有处理任务过程中不同的值。

9d000daa89a433f90374e5717ba61130.png

而我们通过代码发现他确实可以实现这样的功能

package executor;

 

/**

* @author tongchen

* @create 2023-02-10 22:48

*/

public class TestThreadLocal {

   public static void main(String[] args) {

       ThreadLocal<Integer> threadLocal = new ThreadLocal<>();

       ThreadLocal<Integer> local = new ThreadLocal<>();

        Thread t1 =new Thread(()->{

                   int count =30;

                   threadLocal.set(count);

            System.out.println(threadLocal.get());

        });

        Thread t2 =new Thread(()->{

                   int count =35;

                   threadLocal.set(count);

            System.out.println(threadLocal.get());

        });

        Thread t3 =new Thread(()->{

                   int count =40;

                   threadLocal.set(count);

            System.out.println(threadLocal.get());

        });

       t1.start();

       t2.start();

       t3.start();

   }

}

514d0dd2249b306c5fda50c6bde66e00.png

事实上,它是在底层维护了一个map,那作为map,他为什么创建时只传入一个参数呢?

我们通过观察源码发现,他的key事实上是当前线程

7b77a9ad37166d9406aab415547e0557.png

a4a8b71ab5fde9086ec6a525fcd7e443.png

相关文章
|
1月前
|
存储 设计模式 安全
深入理解ThreadLocal原理
本文深入探讨了Java中的ThreadLocal及其内部数据结构ThreadLocalMap的工作原理和特性,帮助读者理解如何利用ThreadLocal实现线程局部变量的隔离和线程安全。
深入理解ThreadLocal原理
|
4月前
|
存储 Java
面试高频 ThreadLocal类详解
面试高频 ThreadLocal类详解
25 0
|
4月前
|
设计模式 缓存 Java
从ThreadLocal谈到TransmittableThreadLocal,从使用到原理3
从ThreadLocal谈到TransmittableThreadLocal,从使用到原理
648 1
|
4月前
|
存储 安全 Java
ThreadLocal原理讲解
ThreadLocal原理讲解
42 0
|
4月前
|
存储 Java
从ThreadLocal谈到TransmittableThreadLocal,从使用到原理2
从ThreadLocal谈到TransmittableThreadLocal,从使用到原理
408 0
|
4月前
|
存储 前端开发 Java
从ThreadLocal谈到TransmittableThreadLocal,从使用到原理1
从ThreadLocal谈到TransmittableThreadLocal,从使用到原理
1027 0
|
存储 设计模式 Java
ThreadLocal的短板,我 TransmittableThreadLocal 来补上!(上)
ThreadLocal的短板,我 TransmittableThreadLocal 来补上!(上)
ThreadLocal的短板,我 TransmittableThreadLocal 来补上!(上)
|
存储 消息中间件 JavaScript
ThreadLocal 你真的用不上吗?
ThreadLocal 你真的用不上吗?
|
Java 定位技术
ThreadLocal原理
经典八股文之ThreadLocal原理
177 0
|
Java 数据库
ThreadLocal的使用和坑点
ThreadLocal的使用和坑点
196 0