为什么ThreadLocal不使用java.util.HashMap来存储值,而是自定义一个?

时间:2015-05-27 12:27:51

标签: java

我正在阅读java.lang.ThreadLocal的源代码,我有两个问题如下。

  1. 为什么ThreadLocal不使用java.util.HashMap来存储值,而是自定义一个?
  2. 为什么ThreadLocalMap在ThreadLocal中定义为静态?如果不是静止的,怎么可能呢?

1 个答案:

答案 0 :(得分:1)

查看最早的JDK 1.2源代码,代码中的日期显示ThreadLocal出现在HashMap之前。

.imageA

由于它是同一作者,我怀疑他写了一个特定的,然后继续取代一般的。我不知道在这个版本之前是否有不同的HashMap实现,但如果有的话看起来像Josh Bloch不想使用它。

此外,通过使用 * <this is HashMap> * @author Josh Bloch * @author Arthur van Hoff * @version 1.29, 04/22/99 * @see Object#hashCode() * @see Collection * @see Map * @see TreeMap * @see Hashtable * @since JDK1.2 * <this is ThreadLocal> * @author Josh Bloch * @version 1.8 07/08/98 * @since JDK1.2 */ ThreadLocal之类的自定义函数来优化getEntryAfterMiss的实现。因此,虽然稍后有另一个Map实现,但对于一般情况有利,你有这个高度自定义的地图实现已经有效。

至于你的第二个问题,http://www.geeksforgeeks.org/static-class-in-java/