Sfida: Semaforo
Compito
Immagina di avere una risorsa a cui possono accedere solo due thread alla volta. Il tuo compito è creare un programma che utilizzi un semaphore per controllare l'accesso a questa risorsa.
Condizioni:
- È presente una classe
Resourcecon un metodouse()che simula l'utilizzo di una risorsa, ad esempio stampando un messaggio e introducendo un ritardo; - È presente una classe
Workerche implementaRunnable; nel suo metodorun(), tenterà di accedere alla risorsa utilizzando unsemaphore; - Nella classe
SemaphoreExampleè presente un metodomain()che inizializza unsemaphorecon permessi per due thread, insieme a diversi thread worker che tenteranno di accedere alla risorsa; - Garantire che non più di due thread possano utilizzare la risorsa in qualsiasi momento.
Si prega di non modificare nulla! È necessario implementare solo il metodo run() nella classe Worker e anche la logica nel metodo use() della classe Resource.
Come dovrebbe funzionare il programma?
Sono presenti 5 thread che desiderano eseguire il metodo use() contemporaneamente, ma con un Semaphore è necessario limitare l'esecuzione simultanea a 2 thread. Non appena un thread rilascia il Semaphore, un altro thread può iniziare l'esecuzione di questo metodo. Per una maggiore chiarezza in questo scenario, è consigliato introdurre un ritardo all'interno del metodo use().
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain how a semaphore works in this context?
What would the output look like when running this program?
Can you show how to implement the Resource and Worker classes?
Awesome!
Completion rate improved to 3.33
Sfida: Semaforo
Scorri per mostrare il menu
Compito
Immagina di avere una risorsa a cui possono accedere solo due thread alla volta. Il tuo compito è creare un programma che utilizzi un semaphore per controllare l'accesso a questa risorsa.
Condizioni:
- È presente una classe
Resourcecon un metodouse()che simula l'utilizzo di una risorsa, ad esempio stampando un messaggio e introducendo un ritardo; - È presente una classe
Workerche implementaRunnable; nel suo metodorun(), tenterà di accedere alla risorsa utilizzando unsemaphore; - Nella classe
SemaphoreExampleè presente un metodomain()che inizializza unsemaphorecon permessi per due thread, insieme a diversi thread worker che tenteranno di accedere alla risorsa; - Garantire che non più di due thread possano utilizzare la risorsa in qualsiasi momento.
Si prega di non modificare nulla! È necessario implementare solo il metodo run() nella classe Worker e anche la logica nel metodo use() della classe Resource.
Come dovrebbe funzionare il programma?
Sono presenti 5 thread che desiderano eseguire il metodo use() contemporaneamente, ma con un Semaphore è necessario limitare l'esecuzione simultanea a 2 thread. Non appena un thread rilascia il Semaphore, un altro thread può iniziare l'esecuzione di questo metodo. Per una maggiore chiarezza in questo scenario, è consigliato introdurre un ritardo all'interno del metodo use().
Grazie per i tuoi commenti!