Home UC3M
Home IT

Práctica 1

Repaso de programación en Java.
Introducción a Procesos e Hilos.

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

  1. 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.
     
  2. 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: #".
    ...  

  3. 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: #".
    ...  

  4. 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.
     
  5. 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.
     
  6. 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