Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sfida: Semaforo | Meccanismi di Sincronizzazione di Alto Livello
Multithreading in Java

bookSfida: 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:

  1. È presente una classe Resource con un metodo use() che simula l'utilizzo di una risorsa, ad esempio stampando un messaggio e introducendo un ritardo;
  2. È presente una classe Worker che implementa Runnable; nel suo metodo run(), tenterà di accedere alla risorsa utilizzando un semaphore;
  3. Nella classe SemaphoreExample è presente un metodo main() che inizializza un semaphore con permessi per due thread, insieme a diversi thread worker che tenteranno di accedere alla risorsa;
  4. Garantire che non più di due thread possano utilizzare la risorsa in qualsiasi momento.
Note
Nota

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().

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

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

bookSfida: 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:

  1. È presente una classe Resource con un metodo use() che simula l'utilizzo di una risorsa, ad esempio stampando un messaggio e introducendo un ritardo;
  2. È presente una classe Worker che implementa Runnable; nel suo metodo run(), tenterà di accedere alla risorsa utilizzando un semaphore;
  3. Nella classe SemaphoreExample è presente un metodo main() che inizializza un semaphore con permessi per due thread, insieme a diversi thread worker che tenteranno di accedere alla risorsa;
  4. Garantire che non più di due thread possano utilizzare la risorsa in qualsiasi momento.
Note
Nota

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().

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4
some-alt