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<Runnable,Object> map = new HashMap<Runnable,Object>();
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());
}
}

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

三、线程中的方法调用栈
线程的方法调用.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 ThreadLocal很多同学都搞不懂是什么东西,可以用来干嘛。但面试时却又经常问到,所以这次我和大家一起学...
    liangzzz阅读 12,488评论 14 228
  • Android Handler机制系列文章整体内容如下: Android Handler机制1之ThreadAnd...
    隔壁老李头阅读 7,665评论 4 30
  • 前言 Handler机制引出ThreadLocal 关于ThreadLocal的分析,首先得从Android的消息...
    soulrelay阅读 6,949评论 3 14
  • 关掉电脑显示屏上的《哈利波特》、《科学小说精选》、《枪炮、玫瑰与病菌》,习惯性的扣着指甲开始发呆。这种状态已经持续...
    没事整两句阅读 195评论 5 1
  • 如果一个人对我说 我从来不相信任何人 我独来独往 我不需要爱 那么我一定不会相信他说的这些话 因为这个世界上 没有...
    Kugo阅读 281评论 0 0