Синхронизация Java 1.4: разрешить запуск только одного экземпляра метода (без блокировки)?

У меня есть класс, предлагающий переводы утилит. Сами переводы должны обновляться каждые 30 минут. Я использую поддержку Spring Timer для этого. В основном мой класс выглядит так:

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

loadTranslations () может выполняться довольно долго, поэтому пока он работает, старые переводы все еще доступны. Это делается путем загрузки переводов на локальную карту и простого изменения ссылки, когда все переводы загружены.

Моя проблема: как мне убедиться, что, когда поток уже загружает переводы, второй также пытается запустить, он обнаруживает это и немедленно возвращается, не запуская второе обновление.

Синхронизированный метод будет только помещать в очередь загрузки ... Я все еще на Java 1.4, поэтому нет java.util.concurrent.

Спасибо за вашу помощь !

Ответы на вопрос(4)

Ваш ответ на вопрос