Autor Tema: Sincronizar y comunicar dos procesos hijos creados a partir de un proceso padre  (Leído 6019 veces)

jeblanfer

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Buenas, pues necesito ayuda con un ejercicio que no se ni como empezar, el ejercicio es este:

Desarrollar una solución multiproceso que permita sincronizar y comunicar dos procesos hijos creados a partir de un proceso padre en Java. Para ello:
Escribir una clase que ejecute dos comandos (cada hijo creado ejecutará uno de ellos) con sus respectivos argumentos y redireccione la salida estándar del primero a la entrada estándar del segundo. Por sencillez, los comandos y sus argumentos pueden suministrarse directamente en el código del programa para no complicarlo demasiado.

Si me lo pudieseis hacer para estudiarlo y ver como se hace, que el tio lo ha puesto casi sin explicar y estamos toda la clase buscandonos la vida >.<
Gracias!

Mastermind

  • Experto
  • *****
  • Mensajes: 536
    • Ver Perfil
Hola, Java permite crear más de un proceso o hilo, de modo que puedes mantener un proceso principal y varios secundarios ejecutándose concurrentemente (al mismo tiempo).

Lo primero que deberías hacer es estudiar la clase Thread, que es la que te permite crear hilos de ejecución.

Tienes dos formas de crear un hilo.

a) A través de una clase que implemente la interface Runnable

Código: [Seleccionar]
public class UnRunnableQueDiceHola implements Runnable {

    public void run() {
        System.out.println("Hola desde un hilo!");
    }

    public static void main(String args[]) {
        (new Thread(new UnRunnableQueDiceHola())).start();
    }

}

b) A través de una clase que extienda la clase Thread

Código: [Seleccionar]
public class UnThreadQueDiceHola extends Thread {

    public void run() {
        System.out.println("Hola desde un hilo!");
    }

    public static void main(String args[]) {
        (new UnThreadQueDiceHola()).start();
    }

}

Aquí puedes ver un ejemplo donde utilizan Threads:

Clase SimpleThread

Código: [Seleccionar]
class SimpleThread extends Thread {
    public SimpleThread(String str) {
super(str);
    }
    public void run() {
for (int i = 0; i < 10; i++) {
    System.out.println(i + " " + getName());
            try {
sleep((int)(Math.random() * 1000));
    } catch (InterruptedException e) {}
}
System.out.println("DONE! " + getName());
    }
}

Clase de test que crea dos hilos

Código: [Seleccionar]
class TwoThreadsTest {
    public static void main (String args[]) {
        new SimpleThread("Jamaica").start();
        new SimpleThread("Fiji").start();
    }
}

El resultado que debes obtener será similar a:

    0 Jamaica
    0 Fiji
    1 Fiji
    1 Jamaica
    2 Jamaica
    2 Fiji
    3 Fiji
    3 Jamaica
    4 Jamaica
    4 Fiji
    5 Jamaica
    5 Fiji
    6 Fiji
    6 Jamaica
    7 Jamaica
    7 Fiji
    8 Fiji
    9 Fiji
    8 Jamaica
    DONE! Fiji
    9 Jamaica
    DONE! Jamaica


 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".