Como posso ter certeza de que um método só é chamado uma vez por vários segmentos?

Eu tenho a seguinte estrutura:

public void someMethod(){  
   //DO SOME STUFF
   try{  
    doSomeProcessing();  
   }  
   catch (Exception e){  
        loadSomeHeavyData();  
        doSomeProcessing();      
   }    
}  

O métodosomeMethod maio ser chamado simultaneamente por muitos threads. odoSomeProcessing maio lançar uma exceção (está usando alguns dados no backend que podem se tornar obsoletos).
Se uma exceção é lançada entãoloadSomeHeavyData(); faz alguma tarefa demorada que digamos "atualiza" todos os dados atuais e eu posso chamardoSomeProcessing();.
Problema: Como posso ter certeza de queloadSomeHeavyData(); é chamado apenasuma vez? Se eu colocar alguma bandeira atômica na entrada doloadSomeHeavyData(); então eu não posso ter certeza quando isso deve ser apagado.
Como posso resolver isso? Apenas uma nota: não posso modificardoSomeProcessing(); como é uma API externa e estou usando o padrão decorator para usá-lo.

questionAnswers(5)

yourAnswerToTheQuestion