Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Desafío: Lock y Condition | Mecanismos de Sincronización de Alto Nivel
Multithreading en Java

bookDesafí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() y greenLight();
  • Uso de Lock y Condition: Aplicar Lock para controlar el acceso a los recursos compartidos y Condition para coordinar los hilos.
Note
Nota

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.

Note
Nota

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.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 2

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 3.33

bookDesafí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() y greenLight();
  • Uso de Lock y Condition: Aplicar Lock para controlar el acceso a los recursos compartidos y Condition para coordinar los hilos.
Note
Nota

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.

Note
Nota

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.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 2
some-alt