我正在阅读有关 Java 并发性的 Oracle 官方文档,我想知道Collection
由返回
public static <T> Collection<T> synchronizedCollection(Collection<T> c);
并使用例如
ConcurrentHashMap
。我假设我使用synchronizedCollection(Collection<T> c)
on a HashMap
。我知道,一般来说,同步集合本质上只是我的装饰器HashMap
所以很明显ConcurrentHashMap
它的内部有一些不同的东西。您有关于这些实施细节的信息吗?
编辑:我意识到源代码是公开的:
ConcurrentHashMap.java http://www.docjar.com/html/api/java/util/concurrent/ConcurrentHashMap.java.html
我会读ConcurrentHashMap的来源 http://www.docjar.com/html/api/java/util/concurrent/ConcurrentHashMap.java.html因为它的细节相当复杂。简而言之它有
- 多个分区可独立锁定。 (默认 16 个)
- 使用并发锁操作来保证线程安全而不是同步。
- 具有线程安全的迭代器。 synchronizedCollection 的迭代器不是线程安全的。
- 不暴露内部锁。 SynchronizedCollection 确实如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)