¿Cómo esperar un hilo que genera su propio hilo?
Estoy tratando de probar un método que funciona en un hilo separado, simplificado es así:
public void methodToTest()
{
Thread thread = new Thread()
{
@Override
public void run() {
Clazz.i = 2;
}
};
thread.start();
}
En mi prueba unitaria, quiero probar que Clazz.i == 2, pero no puedo hacer esto porque creo que la afirmación se ejecuta antes de que el hilo cambie el valor. Pensé en usar otro hilo para probarlo y luego usar join para esperar, pero aún no funciona.
SSCCE:
@Test
public void sscce() throws InterruptedException
{
Thread thread = new Thread()
{
@Override
public void run() {
methodToTest()
}
};
thread.start();
thread.join();
AssertEquals(2, Clazz.i);
}
public static class Clazz
{
public static int i = 0;
}
Creo que esto se debe a que el código principal de prueba crea un subproceso que está esperando (unido) al segundo subproceso, pero el segundo subproceso no hace el trabajo, crea otro subproceso para hacer el trabajo y luego termina, que continúa el primero hilo, mientras que el tercer hilo hace elClazz.i = 2
Después de la afirmación.
¿Cómo puedo hacer que el primer hilo espere el hilo que comienza?así como cualquier hilo que ese hilo comience?