我在靜態工廠方法中編寫了下面的代碼來返回DefaultCache的單個實例。工廠方法創建單例實例
public static ICache getInstance() {
if (cacheInstance == null) {
synchronized (ICache.class) {
if (cacheInstance == null) {
cacheInstance = new DefaultCache();
}
}
}
return cacheInstance;
}
我們真的需要第二個空支票cacheInstance synchronized塊裏面?
除了答案,看看c2.com/cgi/wiki?SingletonsAreEvil – Slauster
你可能想要閱讀維基百科關於[Double-checked locking]的文章(http://en.wikipedia.org/wiki/Double_checked_locking_pattern #Usage_in_Java) –