[徹底理解ThreadLocal(看這篇文章就夠了)](https://zhuanlan.zhihu.com/p/61587053)
[面試官:小伙子,聽說你看過ThreadLocal源碼?](https://www.cnblogs.com/wang-meng/p/12856648.html)
對于`ThreadLocal`,大家的第一反應可能是很簡單呀,線程的變量副本,每個線程隔離。那這里有幾個問題大家可以思考一下:
* **ThreadLocal**的key是**弱引用**,那么在 threadLocal.get()的時候,發生**GC之后**,key是否**為null**?
* **ThreadLocal**中**ThreadLocalMap**的**數據結構**?
* **ThreadLocalMap**的**Hash算法**?
* **ThreadLocalMap**中**Hash沖突**如何解決?
* **ThreadLocalMap**擴容機制?
* **ThreadLocalMap**中過期key的清理機制?**探測式清理**和**啟發式清理**流程?
* **ThreadLocalMap.set()**方法實現原理?
* **ThreadLocalMap.get()**方法實現原理?
* 項目中**ThreadLocal**使用情況?遇到的坑?
* ……
上述的一些問題你是否都已經掌握的很清楚了呢?本文將圍繞這些問題使用圖文方式來剖析`ThreadLocal`的**點點滴滴**。
**全文目錄**
1. **ThreadLocal**代碼演示
2. **ThreadLocal**的數據結構
3. GC 之后key**是否為null**?
- 前言
- Android系統的體系結構
- Dalvik VM 和 JVM 的比較
- Android 打包應用程序并安裝的過程
- Android ADB工具
- Android應用開發
- Android UI相關知識總結
- Android 中window 、view、 Activity的關系
- Android應用界面
- Android中的drawable和bitmap
- AndroidUI組件adapterView及其子類和Adapter的關系
- Android四大組件
- Android 數據存儲
- SharedPreference
- Android應用的資源
- 數組資源
- 使用Drawable資源
- Material Design
- Android 進程和線程
- 進程
- 線程
- Android Application類的介紹
- 意圖(Intent)
- Intent 和 Intent 過濾器(Google官網介紹)
- Android中關于任務棧的總結
- 任務和返回棧(官網譯文)
- 總結
- Android應用安全現狀與解決方案
- Android 安全開發
- HTTPS
- 安卓 代碼混淆與打包
- 動態注入技術(hook技術)
- 一、什么是hook技術
- 二、常用的Hook 工具
- Xposed源碼剖析——概述
- Xposed源碼剖析——app_process作用詳解
- Xposed源碼剖析——Xposed初始化
- Xposed源碼剖析——hook具體實現
- 無需Root也能Hook?——Depoxsed框架演示
- 三、HookAndroid應用
- 四、Hook原生應用程序
- 五、Hook 檢測/修復
- Android 應用的逆向與加固保護技術
- OpenCV在Android中的開發
- Android高級開發進階
- 高級UI
- UI繪制流程及原理
- Android新布局ConstraintLayout約束布局
- 關鍵幀動畫
- 幀動畫共享元素變換
- Android異步消息處理機制完全解析,帶你從源碼的角度徹底理解
- Android中為什么主線程不會因為Looper.loop()里的死循環卡死?
- 為什么 Android 要采用 Binder 作為 IPC 機制?
- JVM 中一個線程的 Java 棧和寄存器中分別放的是什么?
- Android源碼的Binder權限是如何控制?
- 如何詳解 Activity 的生命周期?
- 為什么Android的Handler采用管道而不使用Binder?
- ThreadLocal,你真的懂了嗎?
- Android屏幕刷新機制