ThreadLocal用于实现线程内的数据共享,即对于相同的代码,多个模块在同一线程中运行时要共享一份数据,而在另外的线程中运行时又共享另外一份数据.
实现对ThreadLocal变量的封装,让外界不直接操作ThreadLocal变量,一是对基本类型的数据封装,这种应用相对少见,二是对对象类型的数据封装,较常见,即让某个类针对不同线程分别创建一个独立的实例对象.
以下是ThreadLocal常用封装:
class MyThreadScopeData{
private MyThreadScopeData(){}
public static MyThreadScopeData getThreadInstance(){
MyThreadScopeData instance = map.get();
if(instance == null){
instance = new MyThreadScopeData();
map.set(instance);
}
return instance;
}
private static ThreadLocal<MyThreadScopeData> map = new ThreadLocal<MyThreadScopeData>();
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}