Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado 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!
-
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
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
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
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
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