Buz*_*zer 6 java collections spring
今天我在采访中提出了一个问题.问题是Collections.synchronizedMap()用于同步地图,默认情况下不像hashmap那样是线程安全的.他的问题是,我们可以在这个方法中传递任何类型的地图.那么当我们在此方法中传递哈希表时会产生什么影响,因为哈希表默认是同步的.
映射的行为将是相同的,但性能会受到影响,因为每个方法将获取两个同步锁,而不是一个。
例如,考虑size()在结果地图上调用该方法。类中的实现Collections.SynchronizedMap如下所示:
public int size() {
synchronized(mutex) {return m.size();} // first lock
}
Run Code Online (Sandbox Code Playgroud)
...其中,m.size()调用实现Hashtable:
public synchronized int size() { // second lock
return count;
}
Run Code Online (Sandbox Code Playgroud)
第一个锁定对象是mutex中的字段SynchronizedMap。第二个锁是隐式的——Hashtable实例本身。
| 归档时间: |
|
| 查看次数: |
221 次 |
| 最近记录: |