Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: jeblanfer en 12 de Octubre 2014, 14:50

Título: Sincronizar y comunicar dos procesos hijos creados a partir de un proceso padre
Publicado por: jeblanfer en 12 de Octubre 2014, 14:50
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!
Título: Re:Sincronizar y comunicar dos procesos hijos creados a partir de un proceso padre
Publicado por: Mastermind en 12 de Octubre 2014, 20:34
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