zoukankan      html  css  js  c++  java
  • ThreadLocalUtils

    1:  Map版

    package cn.com.util;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Objects;
    
    public class ThreadLocalUtils {
    
        private static ThreadLocal<Map<Object, Object>> RESOURCES;
    
        // 子线程可继承的ThreadLocal
        public static ThreadLocalUtils initInhert() {
            removeResources();
            RESOURCES = new InheritableThreadLocal();
            RESOURCES.set(new HashMap<>());
            return null;
        }
    
        public static void withInitial() {
            removeResources();
            RESOURCES = ThreadLocal.withInitial(() -> new HashMap<>());
        }
    
        public static void removeResources() {
            if (Objects.nonNull(RESOURCES)) {
                RESOURCES.remove();
            }
        }
    
        public static Map<Object, Object> getResources() {
            return RESOURCES.get();
        }
    
        public static void put(Object key, Object value) {
            Objects.requireNonNull(key, "key cannot be null");
            getResources().put(key, value);
        }
    
        public static Object get(Object key) {
            return getResources().get(key);
        }
    
        public static Object remove(Object key) {
            return getResources().remove(key);
        }
    
    }

    测试:

    public static void main(String[] args) throws Exception {
            Map<Object, Object> resources = ThreadLocalUtils.initInhert().getResources();
            resources.put("111","aaa");
            System.out.println(ThreadLocalUtils.getResources());// {111=aaa}
            resources.put("222","bbb");
            System.out.println(ThreadLocalUtils.getResources());// {111=aaa, 222=bbb}
            Thread t = new Thread(() -> {
                Map<Object, Object> resourcesChild = ThreadLocalUtils.getResources();
                resourcesChild.put("333","ccc");
                System.out.println(ThreadLocalUtils.getResources());// {111=aaa, 222=bbb, 333=ccc}
            });
            t.start();
            Thread.sleep(2000L);
            System.out.println(ThreadLocalUtils.getResources());// {111=aaa, 222=bbb, 333=ccc}
        }
  • 相关阅读:
    Piggy-Bank (hdoj1114)
    Word Amalgamation(hdoj1113)
    Lowest Bit(hdoj1196)
    1206: B.求和
    1207: C.LU的困惑
    STL初步
    关于521(nyoj)
    first blood暴力搜索,剪枝是关键
    变态最大值(nyoj)
    烧饼(nyoj779)
  • 原文地址:https://www.cnblogs.com/bevis-byf/p/12426203.html
Copyright © 2011-2022 走看看