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

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