zoukankan      html  css  js  c++  java
  • 手写自己的ThreadLocal(线程局部变量)

    ThreadLocal对象通常用于防止对可变的单实例变量或全局变量进行共享。

    精简版:

    public class MyThreadLocal<T> {
        private Map<Thread, T> map = Collections.synchronizedMap(new HashMap<Thread, T>());
     
        public void set(T newValue) {
            map.put(Thread.currentThread(), newValue);
        }
     
        public T get() {
            return map.get(Thread.currentThread());
        }
     
        public void remove() {
            map.remove(Thread.currentThread());
        }
    }
    package com.lxc.tet;
    
    import java.util.Map;
    import java.util.concurrent.ConcurrentHashMap;
    
    public class MyThreadLocal<T> {
        private Map<Thread,T> map = new ConcurrentHashMap<Thread, T>();
        
        protected T initialValue(){
            return null;
        }
        
        public void set(T value){
            map.put(Thread.currentThread(), value);
        }
        
        public T get(){
            T result = null;
            result = map.get(Thread.currentThread());
            if(result==null && !map.containsKey(Thread.currentThread())){
                result=initialValue();
                set(result);
            }
            return result;
        }
        
        public void remove(){
            map.remove(Thread.currentThread());
        }
    }
  • 相关阅读:
    peudoclass与pseudo的相同点与不同点
    第一个页面
    自我介绍
    Virtual IP Address 学习记录
    OpenStack 学习记录
    Dubbo学习记录 MAC
    售前 银行
    log4j2 学习记录 Pattern Layout
    Zookeeper学习记录 mac下安装部署
    P2695 骑士的工作
  • 原文地址:https://www.cnblogs.com/lxcmyf/p/8390655.html
Copyright © 2011-2022 走看看