码迷,mamicode.com
首页 > 编程语言 > 详细

手写自己的ThreadLocal(线程局部变量)

时间:2018-01-31 11:39:26      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:put   线程   防止   post   oid   public   initial   void   oca   

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

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

 

手写自己的ThreadLocal(线程局部变量)

标签:put   线程   防止   post   oid   public   initial   void   oca   

原文地址:https://www.cnblogs.com/lxcmyf/p/8390655.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!