¿Cómo puedo demostrar rápidamente que la siguiente clase no es segura para subprocesos (ya que usa la inicialización diferida y no usa sincronización) escribiendo algún código? En otras palabras, si estoy probando la siguiente clase para seguridad de hilos, ¿cómo puedo fallar?Comprobando que el siguiente código no es seguro para hilos
public class LazyInitRace {
private ExpensiveObject instance = null;
public ExpensiveObject getInstance() {
if (instance == null)
instance = new ExpensiveObject();
return instance;
}
}
¿Agregaría un 'Thread.sleep' en la ayuda del constructor? – Amarghosh
¿* Tiene * para probarlo usando el código, o puede probarlo de otras maneras? Un diagrama de ejecución simple podría usarse para demostrar que no es seguro. – Herms
¿Qué hay para demostrar? Esto no es seguro para subprocesos. – ChaosPandion