線程處理資源類:
package org.shefron.fc.thread.threadlocal;
import java.util.HashMap;
public class HandleThead extends Thread {
private HashMap map = null;
public HandleThead(HashMap hashMap) {
map = hashMap;
}
@Override
public void run() {
super.run();
RegisterManager.getRegisterManager().startRegister(map);
if (RegisterManager.getRegisterManager().getRegister() != null){
System.out.println("呵呵,有啊");
}
}
public void print(){
if (RegisterManager.getRegisterManager().getRegister() == null){
System.out.println("沒有了");
}
}
}
多線程資源管理類:
package org.shefron.fc.thread.threadlocal;
import java.util.HashMap;
public class RegisterManager {
private ThreadLocal<HashMap> localRegister = new ThreadLocal<HashMap>();
private static RegisterManager manager = new RegisterManager();
private RegisterManager(){
}
public static RegisterManager getRegisterManager(){
return manager;
}
public void startRegister(HashMap infoMap){
this.localRegister.set(infoMap);
}
public HashMap getRegister(){
return this.localRegister.get();
}
}
主方法測試類:
package org.shefron.fc.thread.threadlocal;
import java.util.HashMap;
public class TestThreadLocal {
/**
* @param args
*/
public static void main(String[] args) {
HashMap map = new HashMap();
map.put("hehe", "haha");
RegisterManager.getRegisterManager().startRegister(map);
HandleThead handle = null;
for (int i=1;i<4;i++){
handle = new HandleThead(new HashMap());
//子線程
handle.start();
if(handle != null){
//此方法位於主線程
handle.print();
}
}
System.out.println(RegisterManager.getRegisterManager().getRegister());
}
}