mam natknąć niektórych kodu, gdzie deweloper jest stale sprawdzając czy Singleton jest null dwukrotnie zagnieżdżone, gdy - jak w poniższym kodzie:Java - czy jest jakikolwiek powód, aby sprawdzić, czy singleton ma dwukrotnie wartość null?
private static processManager singleton = null;
...
public synchronized static processManager getInsatnce() throws Exception {
if(singleton == null) {
if(singleton == null){
singleton = new processManager();
}
}
return singleton
}
I nie widzę żadnego powodu, dlaczego by tak było, ale w kodzie jest wiele przykładów, więc pomyślałem, że może być jakiś powód?
Wygląda na nieudaną próbę zablokowania dwufazowego. To mogło mieć sens, jeśli najbardziej wewnętrzna instrukcja "if" znajdowała się w bloku "zsynchronizowanym". – toniedzwiedz
Tak, patrzę na odpowiedź Marko. Ciekawy! – Sanchit
http://en.wikipedia.org/wiki/Double-checked_locking? – mbatchkarov