Ejercicio

prev.gif (997 bytes)chapter.gif (1105 bytes)home.gif (1232 bytes)next.gif (1211 bytes)

Subprocesos (threads)

Diseño

El código fuente


Vemos en el applet, varios círculos aumentando y disminuyendo de radio, de forma independiente unos de los otros y a distinto ritmo. Este ejemplo nos da la ilusión de un conjunto de subprocesos que se ejecutan a la vez.

Diseño

El proyecto consta de dos clases

La clase denominada Circulo

La clase derivará de la clase base Thread

y tendrá los siguientes miembros dato

y las funciones miembro siguientes:

Como criterio se establece que el círculo crece hasta que su radio actual sea el doble que su radio medio, y decrece hasta que su radio sea igual a 1.

 

La clase que describe el applet

Se reservará espacio para un array que guarde un máximo de 10 círculos

En la función miembro init se crearán los objetos de la clase Circulo y se guardarán en el array.

En la función miembro start se pondrán en marcha los subprocesos descritos por la clase Circulo.

En la función miembro stop, se pararán todos los subprocesos descritos por la clase Circulo.

Se redefinirá update, dibujándose todos los círculos empleando la técnica del double-buffer.

 

Criterios

El radio medio de los círculos será un número aleatorio compendido entre 5 y 25

Se elegirá al azar un color de un array colores y se pintará el círculo de dicho color.

El tiempo de pausa (argumento de sleep) será un número al azar entre 50 y 550

La posición del círculo estará dada por dos números al azar

Estos datos se pasan al constructor de la clase Circulo cuando se crean los objetos de dicha clase.

Un número al azar comprendido entre 0 y 1 se puede generar con la función random de la clase Math, o bien, se puede emplear la clase Random.

 

El código fuente

disco.gif (1035 bytes)procesos: Circulo.java, ProcesosApplet.java