2009-10-27 10 views

Respuesta

7

Thread Weaver de Google proporciona una capacidad algo similar para Java. Desde la página del proyecto Thread Weaver:

Thread Weaver es un marco para escribir pruebas de unidad de subprocesos múltiples en Java.

Proporciona mecanismos para crear puntos de interrupción dentro de su código, y para detener la ejecución de un hilo cuando se alcanza un punto de interrupción. Otros hilos pueden ejecutarse mientras el primer hilo está bloqueado. Esto le permite escribir pruebas repetibles que pueden verificar las condiciones de carrera y la seguridad de las secuencias.

+0

No lo sabía. Supongo que CHESS es más completo, ¡pero gracias por la información! –

5

Si solo quieres comprobar tu programa java, ¿has considerado hacerlo al revés: convertir Java en código administrado (http://www.ikvm.net/) y ejecutarlo con ajedrez?

Existen bastantes herramientas de análisis estático para Java, por ejemplo findbugs, que pueden ayudarlo a encontrar problemas de concurrencia en función de su código fuente, pero no he visto nada que realmente intente ejecutar una aplicación.

+0

+1: una idea interesante. IKVM es una implementación (temprana) de una JVM y las bibliotecas de clases de Java en .NET. –

+0

Eso es interesante; Gracias por la sugerencia. Pero, ¿el modelo de memoria de Java es similar al de .NET? Me preocupa que la ejecución del código Java en .NET pueda causar la aparición de diferentes problemas ... –

+0

Hosam: la mayoría del código Java probablemente no se basa en los detalles específicos del modelo de memoria para ejecutarse correctamente. Entonces, creo que es poco probable que tus pruebas fallen en esas cosas. Recuerde que el modelo de memoria es en gran parte un detalle de implementación, incluso para Java (aunque muchas cosas están especificadas, de hecho, pero los programas normales rara vez necesitan confiar en eso). – Joey

Cuestiones relacionadas