我有一個課程提出翻譯實用程序。翻譯本身應該每30分鐘重新加載一次。我使用Spring Timer支持。基本上,我的課是這樣的:Java 1.4同步:只允許一個方法的實例運行(非阻塞)?
public interface Translator {
public void loadTranslations();
public String getTranslation(String key);
}
loadTranslations()可以相當長的運行,所以它運行時的舊譯本仍然可用。這是通過在本地地圖中加載翻譯並在加載所有翻譯時更改引用來完成的。
我的問題是:我該如何確保當一個線程已經加載的翻譯,是第二個也嘗試運行,它檢測到並立即返回,而無需啓動第二次更新。
一個synchronized方法只能排隊負載...我仍然在Java 1.4中,所以沒有java.util.concurrent中。
感謝您的幫助!
這正好在正確的方向,但同步是不是同步讀取和寫入操作一樣簡單。該領域的檢查和寫作必須是原子... – Guillaume 2010-08-11 21:01:32