ThreadLocal
时间:2021-07-12
本文章向大家介绍ThreadLocal,主要包括ThreadLocal使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
什么是ThreadLocal?
1.从源码开始了解ThreadLocal
首先进入Thread类
(ctrl+f)搜索会发现Thread类中存在这样一个变量,这个变量可以提供给我们在当前线程中储存一些东西,这就是ThreadLocal的核心。
ThreadLocal.ThreadLocalMap threadLocals = null;
现在我们移步到ThreadLocal类中
找到getMap(Thread t)这个方法,这个方法是获取当前线程的ThreadLocalMap threadLocals变量,threadLocals就是上面提到的Thread类中的变量
set(T value)方法
首先获取到当前线程,通过getMap方法获取当前线程的ThreadLocalMap threadLocals变量,再以ThreadLocal对象作为key保存value在当前线程的ThreadLocalMap threadLocals中
get()同理从当前线程ThreadLocalMap threadLocals变量中获取一个key为ThreadLocal对象的value
栗子:
public static void main(String[] args) {
ThreadLocal<String> tl1 = new ThreadLocal<>();
ThreadLocal<String> tl2 = new ThreadLocal<>();
//创建一个线程 testThread
Thread testThread = new Thread(() -> {
//保存两个值到线程中
tl1.set("value1");
//通过ThreadLocal向testThread线程中的ThreadLocalMap threadLocals变量中set(tl1Object,"value1")
tl2.set("value2");
//通过ThreadLocal向testThread线程中的ThreadLocalMap threadLocals变量中set(tl2Object,"value2")
//通过ThreadLocal从当前线程中ThreadLocalMap threadLocals变量中获取刚刚存储的两个值
System.err.println(tl1.get());
System.err.println(tl2.get());
});
testThread.start();
}
}
原文地址:https://www.cnblogs.com/Zhusi/p/15004329.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在Linux中对文件的编码及对文件进行编码转换操作
- shutil模块,为什么说它是os模块的兄弟模块?
- HTML5+CSS3项目实战之河马牙医首页、百度首页、Mac桌面、简书首页、登录注册页面、苏宁易购首页
- 【Vue.js】Vue.js中的Vuex、Vue-Ajax和京东购物车项目实战
- ubuntu16.04安全小结-01
- 重新认识HTTP3xx重定向机制
- 【Vue.js】Vue.js中常用的UI组件库和Vue Router
- 四大查找算法
- 从Python调用堆栈获取行号等信息
- 详解supervisor进程管理
- Python时间模块常用操作总结
- rtmp规范1.0
- 实战|Python轻松实现动态网页爬虫(附详细源码)
- 排序算法 --- 桶排序
- 8086汇编语言——操作内存中的数据