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());
}
}

最新文章

  1. 漫谈C++:良好的编程习惯与编程要点
  2. Easy Tag Write(3.2)
  3. Form表单提交数据的几种方式
  4. ReactNative之坑爹的在线安装
  5. C语言 ---- 数组 iOS学习-----细碎知识点总结
  6. JQuery_过滤选择器
  7. @Configuration 和 @Bean
  8. OWIN概述
  9. 离线更新SEPM服务器的病毒定义库
  10. 10905 - Children&#39;s Game
  11. android文件系统挂载分析(1)---正常开机挂载
  12. MATLAB的基本元素
  13. CJOJ 1494 【网络流24题】 搭配飞行员(二分图最大匹配)
  14. Java笔记 (持续更新ing)
  15. 4种方法让SpringMVC接收多个对象(转:http://blog.csdn.net/lutinghuan/article/details/46820023)
  16. C语言将字符串转json
  17. Spring boot 问题总结
  18. leetcode57:插入区间
  19. [Python_7] Python Socket 编程
  20. Git 基础 - 远程仓库的使用

热门文章

  1. 关于session_cache_expire 的理解
  2. 嵌入式开发之zynq驱动—— zynq ps pl ddr 内存地址空间映射
  3. openssl创建自己的CA certificate
  4. 【C/C++学院】0904-boost智能指针/boost多线程锁定/哈希库/正則表達式
  5. 每天一个linux命令:mv命令
  6. c# 正则实践
  7. 移植3.4.2的Kernel到JZ2440
  8. 【Math】矩阵求导
  9. 2 python大数据挖掘系列之淘宝商城数据预处理实战
  10. 用Fiddler查看 Android/iOS 网络请求