gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:59:22 29 4
gpt4 key购买 nike

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

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

最佳答案

查看最早的JDK 1.2源码,代码上的日期显示ThreadLocal先于HashMap。

  * <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
*/

因为是同一个作者,我怀疑他写了一个具体的,后来又把通用的替换掉了。我不知道在此版本之前是否有 HashMap 的不同实现,但如果有的话,Josh Bloch 似乎不想使用它。

此外,ThreadLocal 的实现似乎通过自定义函数(如 getEntryAfterMiss expungeStaleEntry 等)进行了优化。因此,虽然还有另一个 Map 实现稍后这对一般情况有好处,你有这个已经有效的高度定制的 map 实现。

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

关于java - 为什么ThreadLocal不用java.util.HashMap来存值,而是自定义一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30482441/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com