gentoo linux, java, software libre y otras hierbas
Dic, 19 2007 - 12:33 pm

[código] Ejemplo simple de Subprocesamiento múltiple en Java

En esta entrada veremos un ejemplo muy sencillo en Java en donde usamos el subprocesamiento múltiple (programación multihilo, o concurrente, o como le quieran llamar). En el ejemplo se usa la clase Thread para dormir un subproceso (usando el método sleep), y se muestran otras características relevantes cuando se programan hilos.

Varios subprocesos imprimiendo en distintos intervalos


public class ProbadorSubprocesos {

   public static void main( String [] args )
   {
      // crear y nombrar a cada subproceso
      ImprimirSubproceso subproceso1 = new ImprimirSubproceso( "subproceso1" );
      ImprimirSubproceso subproceso2 = new ImprimirSubproceso( "subproceso2" );
      ImprimirSubproceso subproceso3 = new ImprimirSubproceso( "subproceso3" );

      System.err.println( "Iniciando subprocesos" );

      subproceso1.start(); // iniciar subproceso1 y colocarlo en estado listo
      subproceso2.start(); // iniciar subproceso2 y colocarlo en estado listo
      subproceso3.start(); // iniciar subproceso3 y colocarlo en estado listo

      System.err.println( "Subprocesos iniciados, termina main\n" );

   } // fin de main

} // fin de la clase ProbadorSubprocesos

// la clase ImprimirSubproceso controla la ejecución de los subprocesos
class ImprimirSubproceso extends Thread {
   private int tiempoInactividad;

   // asignar nombre a subproceso, llamando al constructor de la superclase
   public ImprimirSubproceso( String nombre )
   {
      super( nombre );

      // elegir tiempo de inactividad aleatorio entre 0 y 5 segundos
      tiempoInactividad = ( int ) ( Math.random() * 5001 );
   }       

   // el método run es el código a ejecutar por el nuevo subproceso
   public void run()
   {
      // colocar subproceso en inactividad durante el tiempo indicado por tiempoInactividad
      try {
         System.err.println(
            getName() + " va a estar inactivo durante " + tiempoInactividad );

         Thread.sleep( tiempoInactividad );
      }

      // si el subproceso se interrumpió durante su inactividad, imprimir rastreo de la pila
      catch ( InterruptedException excepcion ) {
         excepcion.printStackTrace();
      }

      // imprimir nombre del subproceso
      System.err.println( getName() + " termino su inactividad" );

   } // fin del método run

} // fin de la clase ImprimirSubproceso

#java ProbadorSubprocesos
Iniciando subprocesos
subproceso1 va a estar inactivo durante 1645
subproceso2 va a estar inactivo durante 2381
Subprocesos iniciados, termina main

subproceso3 va a estar inactivo durante 2398
subproceso1 termino su inactividad
subproceso2 termino su inactividad
subproceso3 termino su inactividad

Descargar código fuente

Etiquetas: java, programación
Los ejercicios utilizados en este post están basados en ejemplos del libro Cómo programar en Java de Deitel, y por lo tanto están bajo la licencia que esta editorial disponga.

6 Comentarios | deja el tuyo

4 enlaces entrantes

2 Comentarios en “[código] Ejemplo simple de Subprocesamiento múltiple en Java”

  1. Jorge dice:

    Hola. Muy buena la información que hay aquí, es de gran ayuda. Ahora tengo una pregunta. Tengo una aplicación en la cual deseo que al escribir cierta palabra en un TextField, al seleccionar un item de un Choice y luego al presionar un botón “Generar” (es decir, sólo cuando ya presione el botón) se despliegue la información correspondiente a cada caso en un TextArea y un ImageIcon. Ahora lo hace cada uno por separado. Cómo lo hago? Espero recibir su ayuda y colaborar en caso de que alguien tenga un problema similar. Muchas gracias

  2. Casidiablo dice:

    Hola Jorge…

    Las dudas puedes plantearlas en:

    https://foro.elhacker.net/java-b70.0/

    Y por suspuesto se espera que pongas lo que llevas hecho y pidas ayuda de cosas muy puntuales.

    Un saludo!

¡Déjanos tu comentario!