今天发帖数达上限了,这里补充下自己实现的ThreadLocal 先看下ThreadLocal的API public void set(T value) 将值放入线程局部变量 public T get() 从线程局部变量获取值 public void remove() 从线程局部变量移除值,JVM垃圾回收 protected T initialValue() 返回线程局部变量中的初始值,默认为null 其实仔细想想,ThreadLocal其实就是封装了Map 废话不多说,上代码 public class MyThreadLocal<T>{ //Collections.synchronizedMap同步     private Map<Thread,T> container=Collections.synchronizedMap(new HashMap<Thread,T>()); //设置值     public void set(T value){         container.put(Thread.currentThread(),value); } //获取值  public T get(){     Thread thread=Thread.currentThread(); T value=container.get(thread); if(value==null && !container.containsKey(thread)){     value=initialValue();     container.put(thread,value); } return value; } //移除 public void remove(){     container.remove(Thread.currentThread()); } //默认值 protected T initialValue(){ return null; } } 手酸了~下次再写了...
点赞 评论

相关推荐

点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务