底层要点简述
- 首先,底层实现了一个线程本地存储,叫
ThreadLocal
区域,
一个主线程以及它对应的所有子线程,共享
同一个ThreadLocal
对象,
这个ThreadLocal对象
中可以说逻辑上维护着一个key-value表
,
这个表为不同的线程一 一 对应
地维护一套数据副本
,每一套
数据副本对应着一个线程
(有多少线程
共享这个ThreadLocal对象,ThreadLocal对象就准备多少套数据副本
),
每一套数据副本也是ThreadLocal对象中这个逻辑key-value表的一个项
,
数据副本在这里可以具体化为Looper对象
,
-
而主线程及其所有子线程都可以开辟自己的
Looper
,
每一个Looper
都要绑定在一个Handler
上,(如下方图1图2)
然后这些个每个Looper
都是共享的Thread