If in a class I have a ConcurrentHashMap instance that will be modified and read by multiple threads I might define like this:
public class My Class { p
A volatile field gives you guarantees as what happens when you change it. (No an object which it might be a reference to)
volatile
A final field cannot be changed (What the fields reference can be changed)
final
It makes no sense to have both.