package com.smart.threadlocal;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* 简单线程本地化
* @author lenovo
*
*/
public class SimpleThreadLocal {
//定义一个线程安全的集合(key为线程,value为值)
private Map<Thread,Object> valueMap = Collections.synchronizedMap(new HashMap<Thread,Object>());
public void set(Object newValue) {
valueMap.put(Thread.currentThread(), newValue);
}
public Object get() {
Thread currentThread = Thread.currentThread();
Object o =valueMap.get(currentThread);
if(o == null && !valueMap.containsKey(currentThread)) {
o =initialValue();
valueMap.put(currentThread, o);
}
return o;
}
public void remove() {
valueMap.remove(Thread.currentThread());
}
public Object initialValue() {
return null;
}
}
简单实现一个ThreadLocal
最新推荐文章于 2023-12-07 09:30:37 发布