Está en la página 1de 3

EJERCICIOS UT2

1. EJERCICIO1

Escribe una clase llamada Relevos que simule una carrera de relevos de la siguiente
forma:
 Cree 4 threads, que se quedarán a la espera de recibir alguna señal para comenzar a
correr.
 Una vez creados los threads, se indicará que comience la carrera, con lo que uno de
los threads deberá empezar a correr.
 Cuando un thread termina de correr, pone algún mensaje en pantalla y espera un par
de segundos, pasando el testigo a otro de los hilos para que comience a correr, y
terminando su ejecución (la suya propia).
 Cuando el último thread termine de correr, el padre mostrará un mensaje indicando que
todos los hijos han terminado.

2. EJERCICIO2.

El objetivo de este ejercicio servirá para poner en práctica la comunicación y sincronización de


hilos compartiendo un objeto. Para ello, se pide realizar un proyecto en eclipse con nombre
“Pintar” en la que dos personas (Ana y Pedro) compartan una pizarra para que cada uno de
ellos escriba una cadena de caracteres de forma alternativa.
 Ana escribirá la palabra TIC y Pedro la palabra TAC, con una prioridad pasada como
parámetro (Se chequeará que el número de argumentos sea 1 y el valor de la prioridad
esté entre 1 y 10), emitiendo un mensaje de error y saliéndose del programa si no se
cumplen las condiciones.
 El total de palabras que cada uno escribirá será 10.
 Antes de que Pedro y Ana empiecen a escribir en la pizarra se mostrará el siguiente
mensaje:
“Ana y Pedro empiezan a escribir en la pizarra”
 La finalización es ordenada, terminando primero Ana y luego Pedro, mostrando un
mensaje de finalización de cada uno de ellos.
 Los hilos irán nombrados y se mostrará su nombre utilizando el método
correspondiente.
 Se utilizarán los nombres apropiados, sabiendo que Ana y Pedro son Personas.
 Se obtendrá el tiempo que Pedro y Ana han tardado en escribir en la pizarra y se
mostrará la prioridad con la que han ejecutado la tarea.

Ejemplo de salida:

Ana y Pedro empiezan a escribir en la pizarra

TIC TAC TIC TAC TIC TAC TIC TAC TIC TAC TIC TAC TIC TAC TIC TAC TIC TAC
TIC TAC

Ana ha finalizado

Pedro ha finalizado

Pedro y Ana han tardado 4 milisegundos en escribir en la pizarra, con una prioridad de 8

Si el número de parámetros pasados no es uno o la prioridad no está entre 1 y 10 se emitirá el


siguiente mensaje:
Se espera un argumento con la prioridad entre 1 y 10.

3. EJERCICIO3.

El objetivo de esta actividad es lograr una comunicación entre hilos, añadir exclusión mutua al
código y bloquear con condiciones de salida.

 Debemos realizar el control de acceso a un parking público.


  No debemos permitir que pasen coches dentro del parking si todas las plazas están
ocupadas.
  En el parking hay 10 plazas. 

Esta actividad no es más que un caso particular del problema de productor-consumidor. 

 Tenemos que crear un monitor que controle el acceso a un recurso compartido, en este
caso las plazas de parking. 
 Simularemos la entrada de 40 coches y su estancia dentro del parking.
  Un coche intenta entrar en el parking, una vez dentro está un tiempo determinado y
marcha. 
 Se debe controlar la entrada, permitir la entrada de coches dependiendo de si hay
plazas y disminuir el número de plazas disponibles. 
 Debe mostrar un mensaje indicando cuando el coche ha entrado y cuando ha salido.
  Se deberá controlar la salida y dejar salir a quien lo solicite. 
 También se deberá aumentar el número las plazas libres y notificarlo a los coches que
están esperando, para que pasen.

Para simular la estancia en el parking haga dormir el hilo del coche mientras se encuentra
dentro del parking.

4. EJERCICIO4.

El objetivo de esta actividad es lograr la comunicación entre hilos.

 En un restaurante hay un cocinero y un camarero.


  El cocinero no puede empezar a hacer pedidos hasta que el camarero no le notifique
que tiene una. Por lo tanto, el cocinero tendrá que esperar a tener un pedido para
poder hacerla. 
 Un camarero tarda unos 5 segundos a generar un pedido y los clientes van entrando
en el restaurante de forma aleatoria. 
 El cocinero sirve los platos cada 4 segundos.

Debe desarrollar una aplicación que controle este sistema utilizando hilos.

 Es una implementación de productor-consumidor donde el productor (camarero) notifica al


consumidor (cocinero) que tiene un ítem (pedido) para consumir. Una forma de resolver el
problema es crear dos clases: una camarero y otra cocinero, que implementen runnable(o
hereden thread).

Tendremos que sincronizar algún método o un bloque de código de algún método. Deberá


mostrar a través de mensajes cuando el cocinero está esperando y cuando recibe el pedido del
camarero. 
Os dejamos la clase Pedido donde guardaréis los pedidos que hay pendientes y el nombre del
plato.
class Pedido {
private string plato = "" ;
volatile int countComada = 0 ;
 
public String getPlato ( ) {
return plato ;

public void setPlato ( String texto ) {
this . plato = texto ;
}
}

También podría gustarte