Netty源码分析-- FastThreadLocal分析(十)

      上节讲过了ThreadLocal的源码,这一节我们来看下FastThreadLocal。这个我觉得要比ThreadLocal要简单,因为缺少了对于Entry的清理和整理工作,所以ThreadLocal的效率更高。

      跟ThreadLocal一样,我们也先给一个结构图:

      

Netty源码分析-- FastThreadLocal分析(十)

      大家看这个图跟ThreadLocal有哪些区别,首先是用一个Object数组来替代了Entry数组,不再是key键值对的形式。 另外Object[0]存储一个Set<FastThreadLocal<?>>集合。

      OK,看完这个,源码就很好理解了,我们还是先看下 InternalThreadLocalMap 构造函数

1 private InternalThreadLocalMap() { 2 super(newIndexedVariableTable()); 3 } 4 5 private static Object[] newIndexedVariableTable() { 6 Object[] array = new Object[32]; //初始化 32 长度的Object数组 7 Arrays.fill(array, UNSET); // 将每个元素初始化成UNSET 这里的UNSET 可以理解为占位符, 因为null会被认为成有效值 8 return array; 9 }

10 UnpaddedInternalThreadLocalMap(Object[] indexedVariables) {
11 this.indexedVariables = indexedVariables; // 将创建的array赋给 Object[] indexedVariables;
12 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssgsg.html