Actividad 11: Hebras y secciones sincronizadas
per Victor Carceler
—
darrera modificació
2020-04-06T12:06:41+01:00
Modifique las clases realizadas en la actividad 10 para mejorar la simulación:
- Cada coche contará con las propiedades privadas int max_fuel, int fuel e int consumo. Representando la capacidad del depósito, la cantidad en el depósito y el combustible consumido por cada kilómetro recorrido. En el constructor de Coche será posible dar valor a max_fuel y a consumo. Cualquier coche partirá con un depósito lleno. El método toString() informará de la cantidad de depósito disponible y el método run() manejará los nuevos datos (cada km recorrido actualiza la cantidad de fuel del depósito, y si no hay fuel el coche no incrementará la distancia recorrida)
- Ejecute de nuevo la simulación para comprobar que los coches se detienen al agotar su depósito
- Escriba la clase Gasolinera para permitir que los coches repuesten. La clase Gasolinera contará con el método público int getFuel(int n) que retornará el número de litros de combustible demandados, esta operación tardará en realizarse tantos segundos como litros se retornen. El código de dicho método estará protegido para evitar que varias hebras lo ejecuten simultáneamente.
- Modifique la clase Coche para que:
- En el constructor se permita especificar el objeto Gasolinera que el coche utilizará para repostar
- Cuando el coche agote su depósito utilizará la Gasolinera para repostar. El coche imprimirá un mensaje cuando intente repostar y otro al terminar la operación.
- Cada coche utiliza una instancia de Gasolinera diferente
- Todos los coches utilizan la misma Gasolinera
- CocheA sólo intentará repostar cuando el depósito se agote. Además intentará repostar en una sóla operación (todo el depósito de golpe)
- CocheB intentará repostar 2L, y sólo 2L, cada vez que su depósito esté por debajo de la mitad