Sincronização do Java 1.4: permite apenas que uma instância do método seja executada (sem bloqueio)?

Eu tenho uma aula propondo utilitários de traduções. As traduções devem ser recarregadas a cada 30 minutos. Eu uso o suporte do Spring Timer para isso. Basicamente, minha aula parece:

public interface Translator {
    public void loadTranslations();
    public String getTranslation(String key);
}

O loadTranslations () pode ser muito longo para ser executado, portanto, enquanto ele estiver sendo executado, as traduções antigas ainda estarão disponíveis. Isso é feito carregando as traduções em um mapa local e apenas alterando a referência quando todas as traduções são carregadas.

Meu problema é: como posso ter certeza de que quando um thread já está carregando traduções, é um segundo também tenta executar, ele detecta e retorna imediatamente, sem iniciar uma segunda atualização.

Um método sincronizado somente enfileirará as cargas ... Ainda estou no Java 1.4, portanto, não java.util.concurrent.

Obrigado pela ajuda !

questionAnswers(4)

yourAnswerToTheQuestion