抛出这8个问题,检验一下你到底会不会ThreadLocal,来摸个底~
0、问题 和Synchronized的区别 存储在jvm的哪个区域 真的只是当前线程可见吗 会导致内存泄漏么 为什么用Entry数组而不是Entry对象 你学习的开源框架哪些用到了ThreadLocal ThreadLocal里的对象一定是线程安全的吗 笔试题 一、概述 1、官方术语 ThreadLocal类是用来提供线程内部的局部变量。让这些变量在多线程环境下访问(get/set)时能保证各个线程里的变量相对独立于其他线程内的变量。 2、大白话 ThreadLocal是一个关于创建线程局部变量的类。 通常情况下,我们创建的成员变量都是线程不安全的。因为他可能被多个线程同时修改,此变量对于多个线程之间彼此并不独立,是共享变量。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程无法访问和修改。也就是说:将线程公有化变成线程私有化。 二、应用场景 每个线程都需要一个独享的对象(比如工具类,典型的就是 SimpleDateFormat ,每次使用都new一个多浪费性能呀,直接放到成员变量里又是线程不安全,所以把他用 ThreadLocal 管理起来就完美了。) 比如: /** * Description: SimpleDateFormat就一份,不浪费资源。 * * @author TongWei.Chen 2020-07-10 14:00:29 */ public