Concorrência Java: Volátil vs final em variáveis em cascata?

é

final Map<Integer,Map<String,Integer>> status = new ConcurrentHashMap<Integer, Map<String,Integer>>();
Map<Integer,Map<String,Integer>> statusInner = new ConcurrentHashMap<Integer, Map<String,Integer>>();
status.put(key,statusInner);

o mesmo que

volatile Map<Integer,Map<String,Integer>> status = new ConcurrentHashMap<Integer,   Map<String,Integer>>();
Map<Integer,Map<String,Integer>> statusInner = new ConcurrentHashMap<Integer, Map<String,Integer>>();
status.put(key,statusInner);

caso o mapa interno seja acessado por diferentes segmentos?

ou é necessário algo assim:

volatile Map<Integer,Map<String,Integer>> status = new ConcurrentHashMap<Integer, Map<String,Integer>>();
volatile Map<Integer,Map<String,Integer>> statusInner = new ConcurrentHashMap<Integer, Map<String,Integer>>();
status.put(key,statusInner);

No caso de NÃO ser um mapa em "cascata", final e volátil têm o mesmo efeito de deixar claro que todos os encadeamentos sempre veem o conteúdo correto do mapa ... Mas o que acontece se o próprio mapa contiver um mapa, como no exemplo ... Como faço para confirmar que o mapa interno está corretamente "com barreira de memória"?

Tanques! Tom

questionAnswers(3)

yourAnswerToTheQuestion