Desafío: Lock y Condition
Descripción de la tarea
Imagina que estás diseñando un controlador de semáforo para una intersección concurrida. El sistema de semáforo consta de tres etapas: luz roja, luz amarilla y luz verde. Estas etapas deben ejecutarse en un orden específico para garantizar un flujo de tráfico seguro y eficiente.
Tu tarea es implementar los métodos: redLight(), yellowLight() y greenLight(). Estos métodos deben ejecutarse estrictamente en el orden de un semáforo real: primero luz roja, luego luz amarilla y finalmente luz verde, sin importar el orden en que los hilos los llamen.
Requisitos:
- Sincronización: Garantizar que los métodos se ejecuten en un orden estricto;
- Multihilo: Los métodos pueden ser llamados desde diferentes hilos, pero la ejecución debe ocurrir en el orden:
redLight(),yellowLight()ygreenLight(); - Uso de Lock y Condition: Aplicar
Lockpara controlar el acceso a los recursos compartidos yConditionpara coordinar los hilos.
El campo counter en la clase TaskLockExample está especificado por una razón, será necesario verificar su valor en cada método y, dependiendo de lo que contenga, decidir si se debe iniciar este hilo o no.
También es necesario utilizar los campos lock y condition para bloquear algún hilo y decidir quién será primero, segundo, tercero.
Una vez que hayas implementado los métodos y pases a la clase Main y ejecutes su método main, deberías obtener una salida sin importar en qué orden y qué hilo ejecute cada método.
Además, imprime algo en la consola para verificar si los métodos se ejecutan en el orden correcto.
También puedes intercambiar el inicio de los hilos (no la implementación en sí, sino el lugar donde se llama al método start() del hilo)
Una vez que esté seguro de que todo funciona correctamente, ejecute las pruebas de verificación en la ruta /src/test/java/TaskLockExampleTest.java.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 3.33
Desafío: Lock y Condition
Desliza para mostrar el menú
Descripción de la tarea
Imagina que estás diseñando un controlador de semáforo para una intersección concurrida. El sistema de semáforo consta de tres etapas: luz roja, luz amarilla y luz verde. Estas etapas deben ejecutarse en un orden específico para garantizar un flujo de tráfico seguro y eficiente.
Tu tarea es implementar los métodos: redLight(), yellowLight() y greenLight(). Estos métodos deben ejecutarse estrictamente en el orden de un semáforo real: primero luz roja, luego luz amarilla y finalmente luz verde, sin importar el orden en que los hilos los llamen.
Requisitos:
- Sincronización: Garantizar que los métodos se ejecuten en un orden estricto;
- Multihilo: Los métodos pueden ser llamados desde diferentes hilos, pero la ejecución debe ocurrir en el orden:
redLight(),yellowLight()ygreenLight(); - Uso de Lock y Condition: Aplicar
Lockpara controlar el acceso a los recursos compartidos yConditionpara coordinar los hilos.
El campo counter en la clase TaskLockExample está especificado por una razón, será necesario verificar su valor en cada método y, dependiendo de lo que contenga, decidir si se debe iniciar este hilo o no.
También es necesario utilizar los campos lock y condition para bloquear algún hilo y decidir quién será primero, segundo, tercero.
Una vez que hayas implementado los métodos y pases a la clase Main y ejecutes su método main, deberías obtener una salida sin importar en qué orden y qué hilo ejecute cada método.
Además, imprime algo en la consola para verificar si los métodos se ejecutan en el orden correcto.
También puedes intercambiar el inicio de los hilos (no la implementación en sí, sino el lugar donde se llama al método start() del hilo)
Una vez que esté seguro de que todo funciona correctamente, ejecute las pruebas de verificación en la ruta /src/test/java/TaskLockExampleTest.java.
¡Gracias por tus comentarios!