Threadlocal及线程中的方法调用栈

一、用法

ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。

1、ThreadLocal.get: 获取ThreadLocal中当前线程共享变量的值。

2、ThreadLocal.set: 设置ThreadLocal中当前线程共享变量的值。

3、ThreadLocal.remove: 移除ThreadLocal中当前线程共享变量的值。

4、ThreadLocal.initialValue: ThreadLocal没有被当前线程赋值时或当前线程刚调用remove方法后调用get方法,返回此方法值。

二、模拟ThreadLocal功能的伪代码
public class ThreadLocal{
//容器:key,当前线程对象
private Map map = new HashMap();
public void set(Object value){//向Map中存数据
map.put(Thread.currentThread(),value);
}
public Object get(){//从Map中取数据
return map.get(Thread.currentThread());
}
public void remove(){
map.remove(Thread.currentThread());
}
}

特点:一个线程放的东西,除了自己谁也拿不到。线程局部变量。

三、线程中的方法调用栈
Threadlocal及线程中的方法调用栈_第1张图片
线程的方法调用.png

你可能感兴趣的:(Threadlocal及线程中的方法调用栈)