什么是 ThreadLocal?

ThreadLocal 诞生于 JDK 1.2,用于解决多线程间的数据隔离问题。也就是说 ThreadLocal 会为每一个线程创建一个单独的变量副本。

ThreadLocal 有什么用?

ThreadLocal 最典型的使用场景有两个:

  • ThreadLocal 可以用来管理 Session,因为每个人的信息都是不一样的,所以就很适合用 ThreadLocal 来管理;
  • 数据库连接,为每一个线程分配一个独立的资源,也适合用 ThreadLocal 来实现。

其中,ThreadLocal 也被用在很多大型开源框架中,比如 Spring 的事务管理器,还有 Hibernate 的 Session 管理等,既然 ThreadLocal 用途如此广泛,那接下来就让我们共同看看 ThreadLocal 要怎么用?ThreadLocal 使用中要注意什么?以及 ThreadLocal 的存储原理等,一起来看吧。

ThreadLocal 使用

ThreadLocal 基本使用

ThreadLocal 常用方法有 set(T)、get()、remove() 等,具体使用请参考以下代码。

ThreadLocal threadLocal = new ThreadLocal();
// 存值
threadLocal.set(Arrays.asList("老王", "Java 面试题"));
// 取值
List list = (List) threadLocal.get();
System.out.println(list.size());
System.out.println(thre

第 5-4 课:ThreadLocal 详解 + 面试题相关推荐

  1. android Handler机制之ThreadLocal详解

    概述 我们在谈Handler机制的时候,其实也就是谈Handler.Message.Looper.MessageQueue之间的关系,对于其工作原理我们不做详解(Handler机制详解). Messa ...

  2. Java高并发编程详解系列-线程上下文设计模式及ThreadLocal详解

    导语   在之前的分享中提到过一个概念就是线程之间的通信,都知道在线程之间的通信是一件很消耗资源的事情.但是又不得不去做的一件事情.为了保证多线程线程安全就必须进行线程之间的通信,保证每个线程获取到的 ...

  3. ThreadLocal详解

    ThreadLocal详解 ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量. 这个玩意有什么用处,或者说为什么要有这么一个东东?先解释一下,在并发编程的时候,成员变量如果不做任何处 ...

  4. 深入浅出多线程编程实战(五)ThreadLocal详解(介绍、使用、原理、应用场景)

    深入浅出多线程编程实战(五)ThreadLocal详解(介绍.使用.原理.应用场景) 文章目录 一.ThreadLocal简介 二.ThreadLocal与Synchronized区别 三.Threa ...

  5. 史上最全ThreadLocal 详解(一)

    目录 一.ThreadLocal简介 二.ThreadLocal与Synchronized的区别 三.ThreadLocal的简单使用 四.ThreadLocal的原理 4.1 ThreadLocal ...

  6. 并发容器之ThreadLocal详解

    文章目录 ThreadLocal的简介 ThreadLocal的实现原理 ThreadLocalMap详解 Entry数据结构 set方法 getEntry方法 remove方法 ThreadLoca ...

  7. 【SVM最后一课】详解烧脑的Support Vector Regression

    AI有道 一个有情怀的公众号 1 Kernel Ridge Regression 首先回顾一下上节课介绍的Representer Theorem,对于任何包含正则项的L2-regularized li ...

  8. 细说Java性能测试第三课 性能测试详解2

    如何制定一份有效的性能测试方案? 上一讲我们学习了性能测试的场景,并且明确了每个场景的核心意义,这一讲我将带你学习如何做好一份性能测试方案,相信你对测试方案这个概念并不陌生,那如何做好一份性能测试方案 ...

  9. Java并发编程:线程封闭和ThreadLocal详解

    什么是线程封闭 当访问共享变量时,往往需要加锁来保证数据同步.一种避免使用同步的方式就是不共享数据.如果仅在单线程中访问数据,就不需要同步了.这种技术称为线程封闭.在Java语言中,提供了一些类库和机 ...

最新文章

  1. 添加FB登陆时,需要curl扩展
  2. layui 给table里面的添加图标_layui中的table中toolbar自定义过程
  3. 【eclipse】安装 Gradle 插件
  4. 485. Max Consecutive Ones
  5. JDK 7和JDK 8中大行读取速度较慢的原因
  6. input标签的值只能两位小数_Day51 HTML表格表单标签、flask框架
  7. jquery datatable设置垂直滚动后,表头(th)错位问题
  8. java前期_【JAVA】前期环境配置
  9. c# xls 复制一行_编写干净的C#代码技巧
  10. 当代年轻人加班报告!
  11. 解决IE8不支持数组的indexOf方法
  12. Python3入门机器学习经典算法与应用 第3章 numpy 聚合操作
  13. 英语不好,也能让你看懂man手册
  14. 微信24小时到账_最新微信转账延迟24小时到账骗局
  15. 普渡大学 计算机金融,普渡大学金融数学专业排名2019年
  16. ES6_1.块级作用域绑定_临时死区TDZ
  17. 北部湾及涠洲岛海域潮汐和海平面特征
  18. 揭秘你所看不见的技术原理 - 附近的人
  19. matlab调节字体的函数,matlab 画图添加图例时,改变图例中字体大小
  20. 自定义ViewPager和弹性圆PagerIndicator

热门文章

  1. ios 点击出现另外一套tabbar_IOS 点击tabbaritem跳转到一个新界面,且隐藏tabbar
  2. python垃圾回收机制为什么标记能解决循环引用问题_python 关于循环引用以及标记清除的问题...
  3. Linux创始人数据结构,Linux 通用数据结构说明
  4. Oracle GoldenGate复制过程
  5. 百度MIP移动页面加速——不只是CDN
  6. 智慧园区-楼宇建模技巧之【建楼篇】
  7. Python之list对应元素求和
  8. InstallShield 杀掉进程
  9. Android Webservices 返回多行多列数据(Dataset)
  10. JavaScript定义类的几种方式