gpt4 book ai didi

java - 当我们在 Collections.synchronizedMap() 中传递哈希表时会发生什么

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:13:14 26 4
gpt4 key购买 nike

今天我在面试中问了一个问题。问题是 Collections.synchronizedMap() 是用于同步 map,默认情况下它不像 hashmap 那样是线程安全的。他的问题是我们可以在这个方法中传递任何类型的 map 。那么当我们在该方法中传递哈希表时会产生什么效果,因为哈希表默认情况下是同步的。

最佳答案

map 的行为将是相同的,但性能会受到影响,因为每个方法将获取两个同步锁而不是一个。

例如,考虑在生成的 map 上调用方法 size()Collections.SynchronizedMap 类中的实现如下所示:

public int size() {
synchronized(mutex) {return m.size();} // first lock
}

... 其中,m.size() 调用Hashtable 中的实现:

public synchronized int size() { // second lock
return count;
}

第一个锁对象是SynchronizedMap中的mutex字段。第二个锁是隐式的 - Hashtable 实例本身。

关于java - 当我们在 Collections.synchronizedMap() 中传递哈希表时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26800258/

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