最近看Handler及Activity相关的文章,多次碰到ThreadLocal这个类,该类实现了进程内线程间的通信,一直不理解,这个东西怎么能够实现线程间的通信的?所以就找资料研究了一下,发现它的设计还是挺简单的,但是完全理解它的用法,却需要仁者见仁智者见智了。
下面说下本人的一些小理解,该类提供了线程安全的同步处理。这个线程安全是如何保证的呢?该类中维护着一个静态内部类ThreadLocalMap,每个线程的调用都会被存到map中,并以调用的thread为key,所生成对象为value。因为该map是一个静态内部类,所以我们即使创建多个该对象,也只维护了一个ThreadLocalMap,因此所有调用的线程共享这一个map,我们可以通过该map来访问到其他thread所持有的数据。
我们在使用Handler的时候,都会接触到Looper,在Looper中就使用到了该类。每个Looper只能绑定一个线程,因此在使用Handler的线程中,我们可以同步的处理一些事情,而无需处理线程安全问题。
参考链接:https://blog.csdn.net/lufeng20/article/details/24314381