ThreadLocal,这个东西到底是干嘛的,很多文章都有介绍,一般是先介绍一下这个类,然后再把它的set方法,和get方法说一遍。
但是说完了,你懂了吗,你知道这玩意儿是干什么用的了吗,好像还是迷迷糊糊的。
那么我今天也来说一说,那么切入点是什么,Handler消息机制。
是个人都知道Handler,Looper,MessageQueue,不细说。别人文章都写了,不是重点。
Looper类里面有一个
static final ThreadLocal<Looper> sThreadLocal = new ThreadLocal<Looper>();
从这里好好看看ThreadLocal到底是干嘛的。
其实就一句话,Thread类里面有Looper类型的属性吗?没有。
那么我们又想每个Thread实例也就是子线程,有自己的Looper,这时候就用到了ThreadLocal.
我的理解就是给Thread类插入了一个属性。我们不需要去修改Thread类,可以给它添加一个属性,这个属性就是Looper或者别的自己自定义的属性。
仔细品一品这句话,Thread类里面有Looper类型的属性吗?没有。但是我们又想每个子线程也就是Thread类的实例都去操作自己的Looper。这就是ThreadLocal的作用。就是变相加了个属性。