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

Posted java_pro

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手写自己的ThreadLocal(线程局部变量)相关的知识,希望对你有一定的参考价值。

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(线程局部变量)的主要内容,如果未能解决你的问题,请参考以下文章

python 线程中的局部变量ThreadLocal

六,手写SpringMVC框架--什么是ThreadLocal?

ThreadLocal 局部变量

三十八 ThreadLocal

ThreadLocal 局部变量

Java并发编程原理与实战二十五:ThreadLocal线程局部变量的使用和原理