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

本文介绍了如何使用Java的ThreadLocal创建一个线程级别的全局缓存工具类ThreadLocalCache。该工具类提供了设置、获取和删除缓存的方法,适用于在同一个线程内存储和检索数据,最后需要调用remove()方法来清理缓存,避免内存泄漏。

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()

清空,防止有缓存数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值