第 5-4 课:ThreadLocal 详解 + 面试题

什么是 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/545643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java LinkedList公共对象peek()方法(带示例)

LinkedList公共对象peek()方法 (LinkedList public Object peek() method) This method is available in package java.util.LinkedList.peek(). 软件包java.util.LinkedList.peek()中提供了此方法。 This method is used to retrieve the head element of the linked list wit…

舵机驱动

舵机的驱动是以PWM信号的占空比来控制的,该PWM信号的周期位20ms,宽度在0.5ms——2.5ms之间,驱使舵机转动角在0——180度之间,一些常用角度对应脉宽如下表: 舵机转动角脉宽00.5 ms451 ms901.5 ms1352 ms1802.5 ms 在实…

【网络流】【Dinic】【Next Array】Dinic模板

注意&#xff1a;有时加边不一定要加反向弧。 Next Array版。 1 #include<cstdio>2 #include<cstring>3 #include<algorithm>4 #include<queue>5 using namespace std;6 #define INF 21474836477 #define MAXN 200118 #define MAXM 6003019 int v[MAXM…

kotlin字符串数组_Kotlin程序读取,遍历,反向和排序字符串数组

kotlin字符串数组Given a string array, we have to read, traverse, reverse and sort its elements. 给定一个字符串数组&#xff0c;我们必须读取&#xff0c;遍历&#xff0c;反转和排序其元素。 Example: 例&#xff1a; Input:arr ["abc", "pqr",…

第 5-3 课:线程池——Executors + 面试题

线程池的创建分为两种方式:ThreadPoolExecutor 和 Executors,上一节学习了 ThreadPoolExecutor 的使用方式,本节重点来看 Executors 是如何创建线程池的。Executors 可以创建以下六种线程池。 FixedThreadPool(n):创建一个数量固定的线程池,超出的任务会在队列中等待空闲的…

液晶显示温度(DS18B20)

DS18B20测温范围-55——125度&#xff0c;在-10——85度之间精度为0.5度&#xff0c;其测温精度还是较高的&#xff0c;DS18B20常见封装为3个引脚&#xff0c;VCC(电源正)&#xff0c;DQ(信号线)&#xff0c;GND(电源负)&#xff0c;如图&#xff1a; DS18B20相关指令&#xf…

英语字根252

英语字根1,agdo,act 做&#xff0c;动2,agrifield 田地&#xff0c;农田(agri也做agro,agr)3,annyear年4,audihear听5,bellwar战争6,brevshort短7,ced,ceed,cessgo行走8,cepttake拿取9,cid,ciscut,kill切&#xff0c;杀10,circring环&#xff0c;圈11,claim,clamcry,shout喊叫1…

第 5-6 课:Java 并发包中的高级同步工具 + 面试题

Java 中的并发包指的是 java.util.concurrent(简称 JUC)包和其子包下的类和接口,它为 Java 的并发提供了各种功能支持,比如: 提供了线程池的创建类 ThreadPoolExecutor、Executors 等;提供了各种锁,如 Lock、ReentrantLock 等;提供了各种线程安全的数据结构,如 Concur…

python日历模块_Python日历模块| setfirstweekday()方法与示例

python日历模块Python calendar.setfirstweekday()方法 (Python calendar.setfirstweekday() Method) setfirstweekday() method is an inbuilt method of the calendar module in Python. It works on simple text calendars and sets the first weekday from when the week s…

51单片机汇编指令

注: Rn与Ri中n0 ~ 7,i0 ~ 1&#xff0c;另外Cy是进位位&#xff0c;同时也是状态位&#xff0c;标志位 数据传送类指令 内部数据传送指令 助记符作用寻址方式机器周期字节数MOV A,Rn将Rn的内容传送给A寄存器11MOV A,directdirect是一个地址单元&#xff0c;将该地址的内容传…

JavaScript:世界上误解最深的语言

JavaScript:The Worlds Most Misunderstood Programming LanguageJavaScript&#xff1a;世界上误解最深的语言Douglas Crockfordwww.crockford.com翻译&#xff1a;袁晓辉&#xff08;http://blog.csdn.net/uoyevoli/&#xff09;JavaScript, aka Mocha, aka LiveScript, aka …

第 5-5 课:线程安全——synchronized 和 ReentrantLock + 面试题

前面我们介绍了很多关于多线程的内容,在多线程中有一个很重要的课题需要我们攻克,那就是线程安全问题。线程安全问题指的是在多线程中,各线程之间因为同时操作所产生的数据污染或其他非预期的程序运行结果。 线程安全 1)非线程安全事例 比如 A 和 B 同时给 C 转账的问题…

MFC中的几个常用类——CFileDialog

2019独角兽企业重金招聘Python工程师标准>>> 1 简介 CFileDialog类封装了Windows常用的文件对话框。常用的文件对话框提供了一种简单的与Windows标准相一致的文件打开和文件存盘对话框功能。 可以用 构造函数提供的方式使用CFileDialog&#xff0c;也可以从CFileDi…

数组中的filter方法_数组filter()方法以及JavaScript中的示例

数组中的filter方法JavaScript filter()方法 (JavaScript filter() method) filter() method is used to returns an array with the values which pass the given test (condition). filter()方法用于返回具有通过给定测试(条件)的值的数组。 Syntax: 句法&#xff1a; arra…

Oracle内置角色connect与resource的权限

首先用一个命令赋予user用户connect角色和resource角色&#xff1a; grant connect,resource to user; 运行成功后用户包括的权限: CONNECT角色&#xff1a; --是授予最终用户的典型权利&#xff0c;最基本的 ALTER SESSION --修改会话 CREATE CLUSTER --建立聚簇 CREATE DATAB…

第 5-7 课:Java 中的各种锁和 CAS + 面试题

如果说快速理解多线程有什么捷径的话,那本文介绍的各种锁无疑是其中之一,它不但为我们开发多线程程序提供理论支持,还是面试中经常被问到的核心面试题之一。因此下面就让我们一起深入地学习一下这些锁吧。 乐观锁和悲观锁 悲观锁和乐观锁并不是某个具体的“锁”而是一种并…

Exchange Server2010部署完后的配置:CA、Outlook Anywhere、OWA域名简写

Exchange Server 2010邮件系统安装完成后&#xff0c;必须经过相应的配置后&#xff0c;才能使Exchange Server 2010邮件系统提供基本的访问、邮件收发等基本功能。下面我们逐一看看如何让Exchanger Server跑起来。Exchange Server2010产品授权&#xff1a;我们目前所安装的Exc…

STM32——PID恒温控制

原理 元件 stm32f103核心板、L298N模块(当然用MOS管更好)、led一个、NPN三极管一个、蜂鸣器一个、DHT11一个、LCD1602一个、电阻200欧两个、可调电阻10K一个、加热丝一个 功能描述 用DHT11检测当前环境温湿度&#xff0c;并将数据显示在LCD1602上&#xff0c;在用设定温度与当…

第 6-2 课:SpringMVC 核心 + 面试题

Spring MVC 介绍 Spring MVC(Spring Web MVC)是 Spring Framework 提供的 Web 组件,它的实现基于 MVC 的设计模式:Controller(控制层)、Model(模型层)、View(视图层),提供了前端路由映射、视图解析等功能,让 Java Web 开发变得更加简单,也属于 Java 开发中必须要…

Python | 查找字符串中每个字符的频率

Given a string and we have to find the frequency of each character of the string in Python. 给定一个字符串&#xff0c;我们必须在Python中查找该字符串的每个字符的频率。 Example: 例&#xff1a; Input: "hello"Output:{o: 1, h: 1, e: 1, l: 2}Python c…