1 Hilos en Java

Debemos implementar en Java un hilo que lance la impresión de una palabra 10 veces. En el programa principal crearemos dos hilos de ese tipo inicializados con dos palabras diferentes y los lanzaremos para que se ejecuten a la vez.

Los hilos se deben implementar de las dos formas vistas en clase de teoría:

  1. Creando una clase que herede de la clase Thread y que ejecute los hilos desde el programa principal. Para crear un hilo el programador define una clase que extiende la clase Thread que es parte del paquete java.lang. Comenta los resultados obtenidos al utilizar este método.

  2. Crear el hilo implementando la interfaz Runnable. Comenta los resultados obtenidos al ejecutar esta método.

  3. Compara ambos métodos y determina cual consideras que es más adecuado y cuales son las razones que hacen un método más adecuado que el otro.

  4. Modifica el programa realizado en el apartado \(2\), para que el primer hilo creado en el main tenga prioridad \(1\). ¿Qué ocurre con la ejecución de los hilos? ¿Qué puedes decir acerca de la gestión de prioridades por parte de la máquina virtual de tu instalación de Java?

2 Hilos en Python

Implementa en Python un programa que lance \(5\) hilos que se encarguen de actualizar una variable global compartida \(50,000\) veces cada uno. Si el programa funciona correctamente la variable (inicializada a \(0\)) debería acabar valiendo \(250,000\). Ejecuta el programa varias veces y comenta los resultados que observes.

3 Hilos en Rust

Escribe un programa en Rust que haga algo similar al caso anterior (python). Ejecuta el programa varias veces y comenta los resultados que observes.

Recuerda que aquí tienes toda la información sobre el uso de Mutex en Rust.

Puedes instalar Rust desde el sistema de paquetería de tu SO o con la herramienta oficial rustup del lenguaje.

4 Entrega

  • Se realiza en pracdlsi en las fechas allí indicadas. Puedes entregar tantas veces como quieras, solo se corrige la ultima entrega.

  • Crea una carpeta llamada p2 y dentro de ella en una carpeta por cada lenguaje de programación estarán el código y archivos de texto o PDF donde contestas a las preguntas y/o aclaras dudas sobre tu implementación.

    Esta carpeta la comprimes en un archivo llamado p2.tgz p.e. así usando el terminal:

    tar cfz p2.tgz p2