mi sono imbattuto in un certo codice, in cui lo sviluppatore è costantemente controllando se il Singleton è nullo due volte con un nidificato se - come nel codice qui sotto:Java: c'è qualche motivo per verificare se un singleton è nullo due volte?
private static processManager singleton = null;
...
public synchronized static processManager getInsatnce() throws Exception {
if(singleton == null) {
if(singleton == null){
singleton = new processManager();
}
}
return singleton
}
I non riesco a vedere alcun motivo per cui questo potrebbe essere, ma ci sono numerose istanze nel codice, quindi ho pensato che ci potesse essere un motivo?
Sembra un tentativo fallito di blocco a due fasi. Questo avrebbe potuto avere senso se l'istruzione 'if' più interna fosse in un blocco' sincronizzato'. – toniedzwiedz
Sì, sto guardando la risposta di Marko. Interessante! – Sanchit
http://en.wikipedia.org/wiki/Double-checked_locking? – mbatchkarov