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
Fantastico!
Completion tasso migliorato a 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!