美文网首页Android
关于ThreadLocal对象

关于ThreadLocal对象

作者: 铜角大王 | 来源:发表于2017-08-10 15:35 被阅读0次

ThreadLocal是一个线程内部的数据存储类,数据存储以后,只能在指定线程中获取到存储的数据,其它线程无法获取到。比如Looper的存储,因为Looper的作用域就是当前线程,每个线程的Looper都不一样,所以用ThreadLocal非常合适。

比如在主线程中定义一个ThreadLocal:private ThreadLocal mBooleanThreadLocal = new ThreadLocal();

然后在不同的子线程中给它赋值,在不同的子线程中取出来的值是在当前子线程中给它赋的值,而并不会覆盖。也就是说每个子线程取出来的值都不一样(如果赋的值不一样的话)。

之所以这么奇妙,是因为不同线程访问同一个ThreadLocal的get方法,ThreadLocal内部会从各自线程中取出一个数组,然后再从数组中根据当前ThradLocal的索引去查找对应的value值。

相关文章

网友评论

    本文标题:关于ThreadLocal对象

    本文链接:https://www.haomeiwen.com/subject/uymhrxtx.html