zoukankan      html  css  js  c++  java
  • ThreadLocal工具类做缓存(线程隔离思想)

    public class ThreadLocalCache {
    
        private static ThreadLocal<Map<String, Object>> cache=new ThreadLocal<Map<String,Object>>();
    
        /**
         * 从ThreadLocal里获取缓存的值
         * @param key 要获取的数据的KEY
         * @return 要获取的值
         */
        public static Object getCache(String key) {
            Map<String, Object> map = cache.get();
            if(isCacheIsNull())
                return null;
            if(map.containsKey(key)){
                return map.get(key);
            }
            return null;
        }
    
        /**
         * 向ThreadLocal缓存值
         * @param key 要缓存的KEY
         * @param value 要缓存的VALUE
         */
        public static void set(String key,Object value) {
            if(!isCacheIsNull()){
                cache.get().put(key, value);
            } else{
                Map<String, Object> vmap = new HashMap<String, Object>();
                vmap.put(key, value);
                cache.set(vmap);
            }
        }
    
        /**
         * 根据KEY移除缓存里的数据
         * @param key
         */
        public static void removeByKey(String key){
            if(!isCacheIsNull()){
                cache.get().remove(key);
            }
        }
    
        /**
         * 移除当前线程缓存
         * 用于释放当前线程threadlocal资源
         */
        public static void remove(){
            cache.remove();
        }
    
        private static boolean isCacheIsNull(){
            return  cache.get()==null;
        }
    
    
        public static String cacheToString() {
            return isCacheIsNull() ? null : cache.get().toString();
        }
    }

    工具类

    当在线程池中使用时,使用后要remove();

  • 相关阅读:
    常用数据结构之字符串
    c++知识点总结--友元&运算符重载
    c++知识点总结-模板特化
    c++知识点总结--new的一些用法
    linux socket c/s上传文件
    STL之算法使用简介
    【bzoj2733】 HNOI2012—永无乡
    【bzoj3132】 Sdoi2013—森林
    【bzoj1483】 HNOI2009—梦幻布丁
    【bzoj3091】 城市旅行
  • 原文地址:https://www.cnblogs.com/zchok/p/11868559.html
Copyright © 2011-2022 走看看