Atom Blog

Creacion y Ejecucion de Subprocesos en Java Netbeans 7.1

La inerfaz Runnable es el medio preferido para crear aplicaciones en Java con subprocesamiento multiple. 
Un objeto Runnable representa una tarea, la misma que puede ejecutarse concurrentemente con otras tareas.
La interfaz Runnable declara un solo metodo, run(), el cual contiene el codigo que define la tarea que debe realizar un objeto Runnable. Cuando se crea e inicia un subproceso que ejecuta un objeto Runnable, el subproceso llama al metodo run del objeto Runnable, el cual se ejecuta en el nuevo subproceso.

Objetos Runnable y la Clase Thread:
La clase MultiplesProcesos implementa a Runnable, de manera que pueden ejecutarse varios objetos MultiplesProcesos de manera concurrente.
La variable tmpInactivo almacena un valor entero aleatorio de 0 a 5 segundos.
Cada subproceso que ejecuta a un objeto MultiplesProcesos permanece inactivo la cantidad de tiempo especificado por la variable tmpInactivo.



Un objeto MultiplesProcesos se ejecuta cuando un subproceso llama al metodo run de MultiplesProcesos.
En la linea 27 se invoca al metodo static sleep() de la clase Thread, para colocar al subproceso en estado de espera sincronizada durante la cantidad especificada de tiempo. Asi, el subproceso pierde el procesador y el sistema permite que otro subproceso se ejecute.

En las lineas 38, 39, 40 se crean 3 subprocesos, cada uno de los cuales especifica un nuevo objeto MultiplesProcesos a ejecutar.
En las lineas 45, 46, 47 se hace una llamada al metodo start() de la clase Thread en cada uno de los subprocesos; cada llamada invoca al metodo run() del objeto Runnable correspondiente para ejecutar la tarea.

La salida de nuestra aplicacion se vera asi:



El codigo en el metodo main() se ejecuta en el subproceso principal, un subproceso creado por la JVM.
El codigo en el metodo run() de MultiplesProcesos se ejecuta en los subprocesos creados. Cuando termina el metodo main, el programa en si continua ejecutandos, ya que aun hay subprocesos vivos. El programa no terminara hasta que el ultimo subproceso termine de ejecutarse, de esta manera la JVM tambien lo hara.

El subproceso con el tiempo de inactividad mas corto es el que normalmente se despierta primero, indicando que acaba de estar inactivo y terminan.

Si desea descargar el proyecto click en la siguiente imagen:





1 comentario: