¿Cuál es una buena forma de aprovechar TDD para eliminar el código seguro para subprocesos? Por ejemplo, decir que tengo un método de fábrica que utiliza la inicialización perezosa para crear una sola instancia de una clase, y devolverlo a partir de entonces:Uso de TDD para expulsar el código seguro para subprocesos
private TextLineEncoder textLineEncoder;
...
public ProtocolEncoder getEncoder() throws Exception {
if(textLineEncoder == null)
textLineEncoder = new TextLineEncoder();
return textLineEncoder;
}
Ahora, quiero escribir una prueba de buena manera TDD que me obliga a hacer este código seguro para hilos. Específicamente, cuando dos hilos llaman a este método al mismo tiempo, no quiero crear dos instancias y descartar uno. Esto se hace fácilmente, pero ¿cómo puedo escribir una prueba que me obligue a hacerlo?
Estoy preguntando esto en Java, pero la respuesta debería ser más ampliamente aplicable.
Gracias. Salió esta mañana mientras escribes una de esas fábricas. Ha aparecido antes cuando se discutía el mecanismo de bloqueo con doble verificación, pero eso fue antes de que SO estuviera presente. –