我有一堂课建议翻译实用程序。翻译本身应每 30 分钟重新加载一次。我为此使用 Spring Timer 支持。基本上,我的课看起来像:
public interface Translator {
public void loadTranslations();
public String getTranslation(String key);
}
loadTranslations() 运行时间可能很长,因此在运行时旧的翻译仍然可用。这是通过在本地地图中加载翻译并在加载所有翻译时更改参考来完成的。
我的问题是:我如何确保当一个线程已经加载翻译时,第二个线程也尝试运行,它检测到并立即返回,而不开始第二次更新。
同步方法只会将负载排队...我仍在使用 Java 1.4,所以没有 java.util.concurrent。
谢谢你的帮助 !