Desafío: Semáforo
Tarea
Imagina que tienes un recurso al que solo pueden acceder dos hilos al mismo tiempo. Tu tarea es crear un programa que utilice un semaphore para controlar el acceso a este recurso.
Condiciones:
- Tienes una clase
Resourcecon un métodouse()que simula el uso de un recurso, como imprimir un mensaje e introducir un retraso; - Tienes una clase
Workerque implementaRunnable; en su métodorun(), intentará acceder al recurso usando unsemaphore; - En la clase
SemaphoreExample, tienes un métodomain()que inicializa unsemaphorecon permisos para dos hilos, junto con varios hilos worker que intentarán acceder al recurso; - Asegúrate de que no más de dos hilos puedan usar el recurso en cualquier momento.
Por favor, no cambies nada. Solo necesitas implementar el método run() en la clase Worker y también implementar la lógica en el método use() de la clase Resource.
¿Cómo debe funcionar el programa?
Se tienen 5 hilos que desean ejecutar el método use() simultáneamente, pero con un Semaphore, es necesario limitar la ejecución simultánea a 2 hilos. Tan pronto como un hilo libera el Semaphore, otro hilo puede comenzar a ejecutar este método. Para mayor claridad en este escenario, se recomienda introducir una demora dentro del método use().
¡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: Semáforo
Desliza para mostrar el menú
Tarea
Imagina que tienes un recurso al que solo pueden acceder dos hilos al mismo tiempo. Tu tarea es crear un programa que utilice un semaphore para controlar el acceso a este recurso.
Condiciones:
- Tienes una clase
Resourcecon un métodouse()que simula el uso de un recurso, como imprimir un mensaje e introducir un retraso; - Tienes una clase
Workerque implementaRunnable; en su métodorun(), intentará acceder al recurso usando unsemaphore; - En la clase
SemaphoreExample, tienes un métodomain()que inicializa unsemaphorecon permisos para dos hilos, junto con varios hilos worker que intentarán acceder al recurso; - Asegúrate de que no más de dos hilos puedan usar el recurso en cualquier momento.
Por favor, no cambies nada. Solo necesitas implementar el método run() en la clase Worker y también implementar la lógica en el método use() de la clase Resource.
¿Cómo debe funcionar el programa?
Se tienen 5 hilos que desean ejecutar el método use() simultáneamente, pero con un Semaphore, es necesario limitar la ejecución simultánea a 2 hilos. Tan pronto como un hilo libera el Semaphore, otro hilo puede comenzar a ejecutar este método. Para mayor claridad en este escenario, se recomienda introducir una demora dentro del método use().
¡Gracias por tus comentarios!