手写自己的ThreadLocal(线程局部变量)
2024-10-14 02:27:32
ThreadLocal对象通常用于防止对可变的单实例变量或全局变量进行共享。
精简版:
public class MyThreadLocal<T> {
private Map<Thread, T> map = Collections.synchronizedMap(new HashMap<Thread, T>()); public void set(T newValue) {
map.put(Thread.currentThread(), newValue);
} public T get() {
return map.get(Thread.currentThread());
} public void remove() {
map.remove(Thread.currentThread());
}
}
package com.lxc.tet; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; public class MyThreadLocal<T> {
private Map<Thread,T> map = new ConcurrentHashMap<Thread, T>(); protected T initialValue(){
return null;
} public void set(T value){
map.put(Thread.currentThread(), value);
} public T get(){
T result = null;
result = map.get(Thread.currentThread());
if(result==null && !map.containsKey(Thread.currentThread())){
result=initialValue();
set(result);
}
return result;
} public void remove(){
map.remove(Thread.currentThread());
}
}
最新文章
- 漫谈C++:良好的编程习惯与编程要点
- Easy Tag Write(3.2)
- Form表单提交数据的几种方式
- ReactNative之坑爹的在线安装
- C语言 ---- 数组 iOS学习-----细碎知识点总结
- JQuery_过滤选择器
- @Configuration 和 @Bean
- OWIN概述
- 离线更新SEPM服务器的病毒定义库
- 10905 - Children&#39;s Game
- android文件系统挂载分析(1)---正常开机挂载
- MATLAB的基本元素
- CJOJ 1494 【网络流24题】 搭配飞行员(二分图最大匹配)
- Java笔记 (持续更新ing)
- 4种方法让SpringMVC接收多个对象(转:http://blog.csdn.net/lutinghuan/article/details/46820023)
- C语言将字符串转json
- Spring boot 问题总结
- leetcode57:插入区间
- [Python_7] Python Socket 编程
- Git 基础 - 远程仓库的使用
热门文章
- 关于session_cache_expire 的理解
- 嵌入式开发之zynq驱动—— zynq ps pl ddr 内存地址空间映射
- openssl创建自己的CA certificate
- 【C/C++学院】0904-boost智能指针/boost多线程锁定/哈希库/正則表達式
- 每天一个linux命令:mv命令
- c# 正则实践
- 移植3.4.2的Kernel到JZ2440
- 【Math】矩阵求导
- 2 python大数据挖掘系列之淘宝商城数据预处理实战
- 用Fiddler查看 Android/iOS 网络请求