Napisałem poniżej kod w statycznej metodzie fabrycznej, aby zwrócić pojedynczą instancję DefaultCache.Fabryczna metoda tworzenia instancji singleton
public static ICache getInstance() {
if (cacheInstance == null) {
synchronized (ICache.class) {
if (cacheInstance == null) {
cacheInstance = new DefaultCache();
}
}
}
return cacheInstance;
}
Czy naprawdę potrzebujemy 2nd czek null dla cacheInstance wewnątrz bloku zsynchronizowanego?
Oprócz odpowiedzi, zajrzyj na c2.com/cgi/wiki?SingletonsAreEvil – Slauster
Możesz przeczytać artykuł w Wikipedii na temat [Double-checked locking] (http://en.wikipedia.org/wiki/Double_checked_locking_pattern #Usage_in_Java) –