Volatile HashMap vs ConcurrentHashMap
caching, concurrency, hashmap, java
Solution
First, it appears you don't understand what the `volatile` keyword does. It makes sure that if the reference value held by the variable declared `volatile` changes, other threads will see it rather than having a cached copy. It has nothing to do with thread-safety in regard to accessing the `HashMap`
Given that, and the fact that you say the `HashMap` is read-only ... you certainly don't need to use anything that provides thread-safety including a `ConcurrentHashMap`
Edit to add: Your last edit you now say "The cache is being populated on a interval"
That's not read-only then, is it?
If you're going to have threads reading from it while you are writing (updating the existing HashMap) then you should use a `ConcurrentHashMap`, yes.
If you are populating an entirely new `HashMap` then assigning it to the existing variable, then you use `volatile`
Problem
I have a cache class which contains a `volatile HashMap<T>` to store cache items. I'm curious what would be the consequences of changing `volatile HashMap` to `ConcurrentHashMap`? Would i gain performance increase? This cache is readonly cache. What would be the best option to use? just HashMap? Cache is being populated on a interval.