ThreadLocal变量只能用于线程私有的原因
发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,这篇文章主要介绍"ThreadLocal变量只能用于线程私有的原因",在日常操作中,相信很多人在ThreadLocal变量只能用于线程私有的原因问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作
千家信息网最后更新 2025年02月09日ThreadLocal变量只能用于线程私有的原因
这篇文章主要介绍"ThreadLocal变量只能用于线程私有的原因",在日常操作中,相信很多人在ThreadLocal变量只能用于线程私有的原因问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"ThreadLocal变量只能用于线程私有的原因"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
对ThreadLocal的使用,通常是通过其set/get方法开始的。
set方法的源码如下:
public void set(T value) { Thread t = Thread.currentThread(); //获取当前线程对象 ThreadLocalMap map = getMap(t); //从当前线程对象中拿到该线程的ThreadLocalMap对象 if (map != null) map.set(this, value); //将该ThreadLocal对象作为key,value作为值放入ThreadLocalMap中 else createMap(t, value);}
get方法的源码如下:
public T get() { Thread t = Thread.currentThread(); //获取当前线程对象 ThreadLocalMap map = getMap(t); //获取当前线程的ThreadLocalMap对象 if (map != null) { ThreadLocalMap.Entry e = map.getEntry(this); //从ThreadLocalMap中以该ThreadLocal对象为key获取其value值 if (e != null) { @SuppressWarnings("unchecked") T result = (T)e.value; return result; } } return setInitialValue();}
通过上述代码可知,ThreadLocal在set值时,是先获取当前操作该ThreadLocal变量的线程对象,然后将该ThreadLocal对象和值以键值对的形式存入当前线程对象的ThreadLocalMap中,这样,每个线程执行这些代码时都会根据自己的情况为该变量赋不同的值并存于当前线程对象内。
在get值时,也是先获取当前操作线程对象,然后从当前线程对象的ThreadLocalMap中获取该ThreadLocal对象对应的值。
因此通过ThreadLocal设置的变量,在每个线程内都有自己的一个副本,因此就是线程私有的。
到此,关于"ThreadLocal变量只能用于线程私有的原因"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
线程
对象
变量
私有
原因
方法
学习
代码
更多
源码
帮助
不同
实用
接下来
副本
就是
形式
情况
文章
理论
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
存储中心服务器搭建
服务器主板能用来玩游戏吗
服务器架构专家英文
网络安全转行
服务器网卡优先级
无线网络技术是什么意思
山东汇信天下网络技术有限公司
网络安全是什么软件
hp服务器换硬盘没反应
易语言 数据库并发
网络技术自学基础
数据库处理技术是什么意思
互联网科技指数基金净值
刀片服务器管理难度低
数据库中表有几部分
html输出数据库中的表格
浙里办软件开发
网络安全专题宣传教育
软件开发关键影响因素
下列什么数据库是SQL
服务器网络集中管理软件
医用软件开发生产
vt口令服务器如何手动更新
jsp软件开发教程
全国全国青少年网络安全公约
数据库字体放大
valorant选择服务器
服务器管理员口令更改频次
数据库的运算符
下列什么数据库是SQL