gpt4 book ai didi

java - Hashtable 上的 Collections.synchronizedMap(Map m)

转载 作者:行者123 更新时间:2023-12-01 07:58:06 29 4
gpt4 key购买 nike

我对 Collections.synchronizedMap(Map m) 在 Hashtable 上的使用有疑问。我们知道两者都会返回一个所有方法都同步的容器,因此在任何情况下我都看不到性能提升。

那么当 Hashtable 满足要求时,为什么我们有实用方法(Collections.synchronizedMap)。

用代码进行澄清会很有帮助。

最佳答案

Hashtable 和 Collections.synchronized() 的存在主要是出于历史原因。自 Java 5 以来,新的 java.util.concurrent在大多数需要多个线程访问同一集合的情况下,应该使用包。

当您收到一个非线程安全的集合(例如来自第三方代码)并且您希望在多个线程之间共享它而不创建新的线程安全/并发集合时,Collections.synchronized() 仍然有用。

请注意,在大多数情况下,您应该使用 java.util.concurrent。同步集合将通过同步对集合的所有访问来保护其内部状态,但这在性能方面效率低下,并且不能解决数据一致性的更大问题。例如,ConcurrentHashMap提供了putIfAbsent()方法将确保该操作的原子性。

关于java - Hashtable 上的 Collections.synchronizedMap(Map m),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27587962/

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