Foros del Web » Programación para mayores de 30 ;) » Java »

Practica de java con hilos

Estas en el tema de Practica de java con hilos en el foro de Java en Foros del Web. Hola, estoy con una practicas de la universidad y ahora no consigo hacer algo que a simple vista es muy simple, es con el uso ...
  #1 (permalink)  
Antiguo 30/01/2015, 10:42
 
Fecha de Ingreso: enero-2015
Mensajes: 2
Antigüedad: 9 años, 3 meses
Puntos: 0
Practica de java con hilos

Hola, estoy con una practicas de la universidad y ahora no consigo hacer algo que a simple vista es muy simple, es con el uso de la clase Thread, uso de wait y notify.

La practica en cuestion es crear un programa simple que haga con 3 hilo el relevo de un puesto de trabajo, se ejecutan los 3 hilos , pero empieza el A y los otros se mantienen en espera, cuando acaba este saca un mensaje y sigue el otro hilo, igualmente cuando acaba este saca un mensaje, y empieza el 3º y ultimo acaba.

Com semaforos si soy capaz de hacerlo, pero sin semaforo no, y estoy desquiciada por esta tonteria.

Si alguien me puede ayudar se lo agradeceria.
  #2 (permalink)  
Antiguo 30/01/2015, 11:28
Avatar de farfamorA  
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 5 meses
Puntos: 24
Respuesta: Practica de java con hilos

¿Y el código que has avanzado? Deberías mostrarlo para indicarte en qué parte estás cometiendo el error.
  #3 (permalink)  
Antiguo 30/01/2015, 12:03
 
Fecha de Ingreso: enero-2015
Mensajes: 2
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Practica de java con hilos

public class ComienzoTurnos
{

public static void main(String[] args) throws InterruptedException
{

System.out.println("Comienza la jornada");

empleado uno = new empleado();
empleado dos = new empleado();
empleado tres= new empleado();

uno.start();
dos.start();
tres.start();
uno.join();

try
{
synchronized (dos)
{
dos.notify();
}
synchronized (tres) {
tres.notify();
}
}
catch (Exception e)
{
e.printStackTrace();
}
try
{
Thread.sleep(5000);
}
catch (Exception e)
{
e.printStackTrace();
}
System.out.println("Fin de la jornada");
}
}

class empleado extends Thread
{
synchronized public void run()
{
try
{
System.out.println(this.getName()+" trabajador empieza.");
wait();
System.out.println(this.getName()+" trabajador finaliza.");
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
  #4 (permalink)  
Antiguo 31/01/2015, 03:58
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Practica de java con hilos

Buenas,

Cita:
La practica en cuestion es crear un programa simple que haga con 3 hilo el relevo de un puesto de trabajo, se ejecutan los 3 hilos , pero empieza el A y los otros se mantienen en espera, cuando acaba este saca un mensaje y sigue el otro hilo, igualmente cuando acaba este saca un mensaje, y empieza el 3º y ultimo acaba.
Si estos son los requisitos, no hace falta complicarse tanto:

Código Java:
Ver original
  1. public class ComienzoTurnos
  2. {
  3.  
  4.    public static void main(String[] args) throws InterruptedException
  5.    {
  6.    
  7.       System.out.println("Comienza la jornada");
  8.    
  9.       empleado uno = new empleado("Thread_Trabajador_1");
  10.       empleado dos = new empleado("Thread_Trabajador_2");
  11.       empleado tres= new empleado("Thread_Trabajador_3");
  12.    
  13.       uno.start();
  14.       uno.join();
  15.       dos.start();
  16.       dos.join();
  17.       tres.start();
  18.       tres.join();
  19.    
  20.    
  21.       System.out.println("Fin de la jornada");
  22.    }
  23. }
  24.  
  25. class empleado extends Thread
  26. {
  27.    public empleado(String name) {
  28.       this.setName(name);
  29.    }
  30.  
  31.    public void run()
  32.    {
  33.       try
  34.       {
  35.          System.out.println(this.getName()+": trabajador empieza.");
  36.          Thread.sleep(2000);
  37.          System.out.println(this.getName()+": trabajador finaliza.");
  38.       }
  39.       catch (Exception e)
  40.       {
  41.          e.printStackTrace();
  42.       }
  43.    }
  44. }

Código Salida Programa:
Ver original
  1. Comienza la jornada
  2. Thread_Trabajador_1: trabajador empieza.
  3. Thread_Trabajador_1: trabajador finaliza.
  4. Thread_Trabajador_2: trabajador empieza.
  5. Thread_Trabajador_2: trabajador finaliza.
  6. Thread_Trabajador_3: trabajador empieza.
  7. Thread_Trabajador_3: trabajador finaliza.
  8. Fin de la jornada

Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: clase, hilos, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:21.