java 全局工具类_工具类:基于ThreadLocal的一个线程级别的全局缓存ThreadLocalCache...

import java.util.HashMap;

import java.util.Map;

/**

* @author Java菜鸟社区

*/

public class ThreadLocalCache {

private static ThreadLocal> cache=new ThreadLocal>();

/**

* 从ThreadLocal里获取缓存的值

* @param key 要获取的数据的KEY

* @return 要获取的值

*/

public static Object getCache(String key) {

Map map = cache.get();

if(isCaheIsNull())

return null;

if(map.containsKey(key)){

return map.get(key);

}else {

return null;

}

}

/**

* 向ThreadLocal缓存值

* @param key 要缓存的KEY

* @param value 要缓存的VALUE

*/

public static void set(String key,Object value)

{

if(!isCaheIsNull()){

cache.get().put(key, value);

}

else{

Map vmap = new HashMap();

vmap.put(key, value);

cache.set(vmap);

}

}

/**

* 根据KEY移除缓存里的数据

* @param key

*/

public static void removeByKey(String key){

if(isCaheIsNull())

return;

else

cache.get().remove(key);

}

/**

* 移除当前线程缓存

* 用于释放当前线程threadlocal资源

*/

public static void remove(){

cache.remove();

}

private static boolean isCaheIsNull(){

return  cache.get()==null;

}

}

我们使用的时候直接在当前线程任意方法里进行储存ThreadLocalCache.set(CacheKeys.CACHE_OUT_TRADE_NO, out_trade_no);

再在当前线程里的任意方法里取值Object out_trade_no_obj = ThreadLocalCache.get(CacheKeys.CACHE_OUT_TRADE_NO);

if(out_trade_no_obj != null){

String out_trade_no = out_trade_no_obj.toSting()

}

在最后的时候需要进行ThreadLocalCache.remove()

清空,防止有缓存数据。

你可能感兴趣的:(java,全局工具类)