Foro de elhacker.net

Programación => Java => Mensaje iniciado por: ITenZangetsuB en 20 Enero 2018, 18:28 pm



Título: Ayuda para el metodo Wait()
Publicado por: ITenZangetsuB en 20 Enero 2018, 18:28 pm
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
   }
   
   
   
   
}


Título: Re: Ayuda para el metodo Wait()
Publicado por: srWhiteSkull en 29 Enero 2018, 04:53 am
https://docs.oracle.com/javase/tutorial/essential/concurrency/guardmeth.html (https://docs.oracle.com/javase/tutorial/essential/concurrency/guardmeth.html)


Título: Re: Ayuda para el metodo Wait()
Publicado por: MoonLord07 en 1 Julio 2020, 20:35 pm
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
   }
   
   
   
   
}


Como estas amigo llevo POO como asignatura y el maestro únicamente deja pdf para leer y ya se que nuestro trabajo es leer y es lo que hago busco vídeos y libros para siempre aprender aun mas y ya estoy en mi proyecto final y este mismo fue el que me toco junto con uno de fumadores he podido correr sin problemas pero este el de los atletas lo he tenido que hacer una y otra vez no se si el problema es uno de los métodos si lo llegaste a completar podrías compartirlo por favor te estaría muy agradecido