Estoy intentando hacer este ejercicio:
Implementar una carrera por relevos:
-Tenemos 4 Atletas dispuestos a correr
-Tenemos una clase principal Carrera
-Tenemos un objeto estático testigo
-Todos los atletas empiezan parados, uno comienza a correr (tarda entre 9 y 11s) y al terminar su
carrera pasa el testigo a otro que comienza a correr, y así sucesivamente
-Pistas:
- Thread.sleep y Math.random para simular la carrera
- synchronized, wait y notify para el paso del testigo o utlizar un Semaphore como testigo
- System.currentTimeMillis o Calendar para ver tiempos
Se que tengo que hacer el metodo wait de alguna forma para que los atletas se quedan esperando hasta que el otro llegue.
Si me podéis decir como llegar a la solucion o ayudar os la agradeceria
Esto es lo que llevo:
public class Carrera extends Thread{
private static int testigo;
private String[] relevos=new String[5];
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 1; i < relevos.length; i++) {
int numeroAleatorio=(int)(Math.random()*(11-9+1) + 9);
try {
Thread.sleep(numeroAleatorio);
System.out.println("Tiempo de espera");
} catch (InterruptedException e)
{
System.out.println (e);
}
System.out.println (i+" Comienza a correr");
}
//Fin del metodo run
}
}