Синхронизация Java 1.4: разрешить запуск только одного экземпляра метода (без блокировки)?
У меня есть класс, предлагающий переводы утилит. Сами переводы должны обновляться каждые 30 минут. Я использую поддержку Spring Timer для этого. В основном мой класс выглядит так:
public interface Translator {
public void loadTranslations();
public String getTranslation(String key);
}
loadTranslations () может выполняться довольно долго, поэтому пока он работает, старые переводы все еще доступны. Это делается путем загрузки переводов на локальную карту и простого изменения ссылки, когда все переводы загружены.
Моя проблема: как мне убедиться, что, когда поток уже загружает переводы, второй также пытается запустить, он обнаруживает это и немедленно возвращается, не запуская второе обновление.
Синхронизированный метод будет только помещать в очередь загрузки ... Я все еще на Java 1.4, поэтому нет java.util.concurrent.
Спасибо за вашу помощь !