[@talishboy][¥20]hashmap hastable 底层实现什么区别?hashtable和concurrenthashtable呢?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

[@talishboy][¥20]hashmap hastable 底层实现什么区别?hashtable和concurrenthashtable呢?

2018-12-14 23:59:48 2454 1

hashmap hastable 底层实现什么区别?hashtable和concurrenthashtable呢?

取消 提交回答
全部回答(1)
  • 1315067356609456
    2019-07-17 23:21:52
    1. hashmap 是线程不安全的,hashtable是线上安全的;
    2. hashtable 的线程完全是通过方法上加 synchroinzed 实现的;
    3. 没有 concurrenthashtable,存在concurrenthashmap;
    4. concurrenthashmap 是通过分段锁来保障线程安全的。

    ----- hashtable -----

    public synchronized V get(Object key) {
        Entry<?,?> tab[] = table;
        int hash = key.hashCode();
        int index = (hash & 0x7FFFFFFF) % tab.length;
        for (Entry<?,?> e = tab[index] ; e != null ; e = e.next) {
            if ((e.hash == hash) && e.key.equals(key)) {
                return (V)e.value;
            }
        }
        return null;
    }
    

    ------ concurrenthashmap -----

    public V get(Object key) {
        Node<K,V>[] tab; Node<K,V> e, p; int n, eh; K ek;
        int h = spread(key.hashCode());
        if ((tab = table) != null && (n = tab.length) > 0 &&
            (e = tabAt(tab, (n - 1) & h)) != null) {
            if ((eh = e.hash) == h) {
                if ((ek = e.key) == key || (ek != null && key.equals(ek)))
                    return e.val;
            }
            else if (eh < 0)
                return (p = e.find(h, key)) != null ? p.val : null;
            while ((e = e.next) != null) {
                if (e.hash == h &&
                    ((ek = e.key) == key || (ek != null && key.equals(ek))))
                    return e.val;
            }
        }
        return null;
    }
    0 0
相关问答

1

回答

HashMap与ConcurrentHashMap计算hash值的方法相同点是什么?

2022-05-09 12:09:24 102浏览量 回答数 1

1

回答

HashMap 和 ConcurrentHashMap 有什么区别?

2021-10-25 17:16:02 1519浏览量 回答数 1

0

回答

HashMap 和 ConcurrentHashMap 有什么区别?

2021-10-25 17:15:56 1377浏览量 回答数 0

0

回答

java中将HashMap与ConcurrentHashMap集合对象合并性能最优方法的是什么?

2021-11-07 22:59:20 183浏览量 回答数 0

0

回答

java中替换ConcurrentHashMap其中的一个key的value数据性能最优方法的是什么

2021-11-07 23:01:51 205浏览量 回答数 0

1

回答

ConcurrentHashMap的结构是什么?

2021-10-28 21:32:48 109浏览量 回答数 1

1

回答

JAVA8之前的ConcurrentHashMap使用什么锁实现

2021-01-08 15:59:17 324浏览量 回答数 1

0

回答

Java流会以一致的方式对ConcurrentHashMap的值求和吗?

2019-12-12 09:15:20 343浏览量 回答数 0

3

回答

WP博客安装出错,求助!!!Fatalerrorrequireonce

2014-01-16 22:11:07 6921浏览量 回答数 3

4

回答

请问wordpress安装主题总是提示这样的信息让我输入ftp帐号密码

2013-10-29 12:03:45 9290浏览量 回答数 4
+关注
月下丶
半生在结冰,半生在融化,一辈子都在学习长大
0
文章
104
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载