最近看Handler及Activity相關(guān)的文章,多次碰到ThreadLocal這個類,該類實現(xiàn)了進程內(nèi)線程間的通信,一直不理解,這個東西怎么能夠?qū)崿F(xiàn)線程間的通信的?所以就找資料研究了一下,發(fā)現(xiàn)它的設(shè)計還是挺簡單的,但是完全理解它的用法,卻需要仁者見仁智者見智了。
下面說下本人的一些小理解,該類提供了線程安全的同步處理。這個線程安全是如何保證的呢?該類中維護著一個靜態(tài)內(nèi)部類ThreadLocalMap,每個線程的調(diào)用都會被存到map中,并以調(diào)用的thread為key,所生成對象為value。因為該map是一個靜態(tài)內(nèi)部類,所以我們即使創(chuàng)建多個該對象,也只維護了一個ThreadLocalMap,因此所有調(diào)用的線程共享這一個map,我們可以通過該map來訪問到其他thread所持有的數(shù)據(jù)。
我們在使用Handler的時候,都會接觸到Looper,在Looper中就使用到了該類。每個Looper只能綁定一個線程,因此在使用Handler的線程中,我們可以同步的處理一些事情,而無需處理線程安全問題。
參考鏈接:https://blog.csdn.net/lufeng20/article/details/24314381