ThreadLocal总结二:整理文档及谈论能够学到什么

142 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第9天,点击查看活动详情

背景知识
  1. 整理写过关于ThreadLocal的相关文档。

  2. 写了这么多文档,学到了什么?

过程

  • 文档入口
  1. ThreadLocal:基础知识及其应用
  2. ThreadLocal:内存泄漏分析及其解决方案
  3. ThreadLocal:在线程池中使用存在的问题及其解决方案
  4. ThreadLocal:工作过程
  5. ThreadLocal源码阅读:散列算法,魔数 0x61c88647 学习
  6. ThreadLocal源码阅读:如何保证取到最新值的?
  7. ThreadLocal源码阅读:散列算法,魔数 0x61c88647 带来的疑问与思考
  8. ThreadLocal源码阅读:如何解决hash碰撞的?
  9. ThreadLocal源码阅读:核心方法set源码探究
  10. ThreadLocal源码阅读:核心方法get源码探究
  11. ThreadLocal源码阅读:核心方法remove源码探究
  12. ThreadLocal:问题及其理解汇总
  • 学到什么
  1. 完美的均匀的散列算法,threadLocalHashCode & (length - 1)。

  2. 环形数组理解和灵活应用。

  3. 扩容逻辑理解。

  4. 弱引用垃圾收集过程,不关心是否内存充足,直接回收。

  5. 线性探测解决hash碰撞。

  6. hash碰撞分析过程。尤其是环形数组和弱引用ThreadLocal对碰撞概率的影响。

  7. 内存泄漏的分析过程。

  8. 对探索过程的练习,从基础知识,注意事项,工作过程,源码剖析,背后设计的意图。层层递进的思维方式。

小结

  1. 以后写代码,要学以致用,把ThreadLocal源码中用到的思想和技术,完全拿到自己项目中使用,不能生搬硬套,而是灵动地使用它,才是学这个知识点的最大收获。

  2. 添加弱引用对象的保护机制。

  3. 使用环形数组。节约空间,在容器中使用,还可以减少扩容频次。

  4. 使用线性探测解决hash碰撞思路。

  5. 自定义容器map,自定义Entry存放具体数据。