首先,您似乎不了解
volatile关键字的作用。它确保如果声明的变量保留的
引用值
volatile发生更改,则其他线程将看到它,而不是拥有缓存的副本。它与访问线程安全无关。
HashMap
鉴于此,并且您说的
HashMap是只读事实,您当然不需要使用任何提供线程安全的东西,包括
ConcurrentHashMap
编辑添加: 您现在的最后一个编辑说“正在按一定间隔填充缓存”
那不是只读的,对吗?
如果在编写(更新现有的HashMap) 时 要让线程读取它 , 则应使用
ConcurrentHashMap,是。
如果要填充一个全新
HashMap的变量,然后将其分配给现有变量,则可以使用
volatile



