Objetivos
El objetivo de esta práctica es repasar los conceptos básicos de programación
en Java, con el fin de que coger soltura programando de cara a las próximas prácticas.
Trabajaremos con el concepto de hilo y veremos distintas formas de trabajar con ellos.
En concreto, estudiaremos los métodos de la clase
Thread
y conoceremos la interfaz
Runnable,
que son básicas en la programación multihilo en Java.
Enunciado
- Descarga los ficheros:
JavaThreadExample,
JavaThread_T y
JavaThread_R.
Estas clases permiten crear hilos heredando de la clase Thread
e implementado la interfaz Runnable. Compílalos y ejecútalos.
Fíjate en su funcionamiento.
- Crea un constructor para las clases JavaThread_T y JavaThread_R
de tal manera que se pueda dar un identificador/nombre a los hilos. Modifica
la salida por pantalla para que cada hilo escriba su nombre y adapta JavaThreadsExample
para que trabaje con el nuevo constructor. La salida por pantalla debería ser:
"Soy el hilo Pepe, heredado de Thread y escribo el número: #".
"Soy el hilo Juan, implementado de Runnable y escribo el número: #".
...
- Modifica las clases anteriores para que se creen 3 hilos de cada tipo llamados 1, 2 y 3.
"Soy el hilo Pepe1, heredado de Thread y escribo el número: #".
"Soy el hilo Pepe2, heredado de Thread y escribo el número: #".
"Soy el hilo Pepe3, heredado de Thread y escribo el número: #".
"Soy el hilo Juan1, implementado de Runnable y escribo el número: #".
"Soy el hilo Juan2, implementado de Runnable y escribo el número: #".
"Soy el hilo Juan3, implementado de Runnable y escribo el número: #".
...
- Añade un método que permita modificar el tiempo de retardo en los bucles que implementan
JavaThread_T y JavaThread_R. Prueba con distintos valores de retardo en
diferentes hilos y comenta los resultados.
- Añade un nuevo método que permita configurar el número de iteraciones del "algoritmo"
que implementa cada hilo. Hazlo de tal manera que si el valor de este parámetro es cero,
el bucle sea infinito.
- Crea dos subclases de JavaThread_T llamadas JavaThread_TA
y JavaThread_TB y otras 2 subclases de JavaThread_R: JavaThread_RA
y JavaThread_RB. Para las subclases A el mensaje de salida deberá ser:
"Soy el hilo ##, de tipo ##, heredado/implementado de ## y escribo el número: #".
Para las subclases B el mensaje de salida deberá ser:
"Soy un hilo de tipo ##, me llamo ##, heredo/implemento de ## y escribo el número: #".
Nota: Se pueden refactorizar las clases base para conseguir una implementación más limpia.
Enlaces
|