关于ThreadLocal对象

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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容