gpt4 book ai didi

java - Volatile HashMap 与 ConcurrentHashMap

转载 作者:搜寻专家 更新时间:2023-10-30 19:49:21 27 4
gpt4 key购买 nike

我有一个包含 volatile HashMap<T> 的缓存类存储缓存项。

我很好奇更改 volatile HashMap 会产生什么后果至 ConcurrentHashMap

我会获得性能提升吗?此缓存是只读缓存。

最好的选择是什么?只是哈希表?缓存按时间间隔填充。

最佳答案

首先,您似乎不了解 volatile 关键字的作用。它确保如果声明为 volatile 的变量持有的引用值发生变化,其他线程将看到它而不是拥有缓存副本。它与访问 HashMap

时的线程安全无关

鉴于此,以及您说 HashMap 是只读的事实......您当然不需要使用任何提供线程安全的东西,包括 ConcurrentHashMap

编辑以添加:您现在说的上次编辑“正在按时间间隔填充缓存”

那不是只读的,是吗?

如果您要在写入(更新现有的 HashMap)时 从中读取线程,那么您应该使用 ConcurrentHashMap,是的。

如果您要填充一个全新的 HashMap 然后将其分配给现有变量,那么您可以使用 volatile

关于java - Volatile HashMap 与 ConcurrentHashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10357823/

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