ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

En esta práctica, agregara código a una aplicación existente. Deberá determinar si el código está ejecutándose en un ambiente multihilo y si es así hacerlo seguro (thread-safe)


Enviado por   •  20 de Febrero de 2017  •  Exámen  •  495 Palabras (2 Páginas)  •  115 Visitas

Página 1 de 2

Practica 1: Acceso sincronizado a datos compartidos

En esta práctica, agregara código a una aplicación existente. Deberá determinar si el código está ejecutándose en un ambiente multihilo y si es así hacerlo seguro (thread-safe)

Tareas

  1. Abrir el proyecto Synchronized como proyecto principal
  2. Expande el directorio del proyecto  
  3. Crear la clase PurchasingAgent en el paquete com.example.
  4. Completar la clase PurchasingAgent.
  1. Agregar el método purchase. El método purchase() debería:
  1. Obtener una referencia a un objeto de tipo Store. Debe notar que la clase Store implementa el patrón de diseño Singleton.
  2. Comprar una camiseta (Shirt)
  • Verificar que la tienda tiene al menos una camiseta en el stock.
  • Utilice el objeto tienda para autorizar una compra con tarjeta crédito. Utilice una tarjeta de crédito con número de cuenta igual a “1234” y una capacidad de compra de 15.00. Debe retornar un resultado de tipo boolean.
  • Si hay camisetas en el stock y la tarjeta de crédito fue autorizada, entonces usted debería tomar esa camiseta de la tienda.
  • Imprima la información de la camiseta y un mensaje indicando si fue adquirida o si la operación no tuvo éxito.

[pic 1]

  1. Ejecute el proyecto varias veces. Note que la tienda contiene solo una camiseta. Puede ver algunas variaciones en la prueba.  Por ejemplo:
  1. Dos mensajes de transacción realizada y dos camisetas

[pic 2]

  1. Dos mensajes de transacción realizada y una camiseta y otra con null

[pic 3]

  1. Dos mensajes de transacción realizada y una camiseta y una excepción

[pic 4]

  1. Un mensaje de transacción realizada, una camiseta y un mensaje de transacción fallida.

[pic 5]

  1. Ahora utilizaremos la clase PurchasingAgent
  1. En la clase PurchasingAgent utilice el constructor y escriba una instrucción  para imprimir un mensaje que nos indique cuando un agente es creado.

[pic 6]

  1. Con el método purchase utilice el método Thread.currentThread() para obtener una referencia al hilo que actualmente ejecuta el método purchase(). Imprima el nombre y el id del hilo obtenido.

[pic 7]

  1. Ejecute el proyecto y observe la salida.
  1. Abra la clase Store y agregue un retardo(delay) al método authorizeCreditCard()

[pic 8]

  1. Ejecute el proyecto varias veces. Debería ver una excepción de tipo java.util.NoSuchElementException en el método purchase. Esta excepción se genera al llamar el método store.takeShirt
  2. Utilice un bloque synchronized para crear un comportamiento predecible. Este bloque debe colocarlo en el método purchase de la clase purchasingAgent.

[pic 9]

  1. Ejecute el proyecto. Debería observar un comportamiento esperado.  Debe observar         un mensaje de transacción exitosa, una camiseta, y un mensaje de transacción fallida.

[pic 10]

...

Descargar como (para miembros actualizados)  txt (2.8 Kb)   pdf (986.7 Kb)   docx (1.4 Mb)  
Leer 1 página más »
Disponible sólo en Clubensayos.com