Sfida: Lock e Condition
Descrizione del Compito
Immagina di progettare un controllore del semaforo per un incrocio molto trafficato. Il sistema semaforico è composto da tre fasi: luce rossa, luce gialla e luce verde. Queste fasi devono essere eseguite in un ordine specifico per garantire un flusso di traffico sicuro ed efficiente.
Il tuo compito è implementare i metodi: redLight(), yellowLight() e greenLight(). Questi metodi devono essere eseguiti rigorosamente nell'ordine di un vero semaforo: prima la luce rossa, poi la luce gialla e infine la luce verde, indipendentemente dall'ordine in cui i thread li chiamano.
Requisiti:
- Sincronizzazione: Garantire che i metodi vengano eseguiti in ordine rigoroso;
- Multithreading: I metodi possono essere chiamati da thread diversi, ma l'esecuzione deve avvenire nell'ordine:
redLight(),yellowLight()egreenLight(); - Utilizzo di Lock e Condition: Applicare
Lockper controllare l'accesso alle risorse condivise eConditionper coordinare i thread.
Il campo counter nella classe TaskLockExample è specificato per un motivo, sarà necessario verificarne il valore in ogni metodo e, a seconda di ciò che contiene, decidere se avviare o meno questo thread.
È inoltre necessario utilizzare i campi lock e condition per bloccare alcuni thread e decidere chi sarà primo, secondo, terzo.
Una volta implementati i metodi e passati alla classe Main ed eseguito il suo metodo main, dovresti ottenere un output indipendentemente dall'ordine e da quale thread esegue quale metodo.
Inoltre, stampa qualcosa sulla console per verificare se i metodi vengono eseguiti nel corretto ordine.
Puoi anche scambiare l'avvio dei thread (non l'implementazione stessa, ma dove viene chiamato il metodo start() del thread)
Una volta verificato che tutto funzioni correttamente, eseguire i test di verifica nel percorso /src/test/java/TaskLockExampleTest.java.
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
Awesome!
Completion rate improved to 3.33
Sfida: Lock e Condition
Scorri per mostrare il menu
Descrizione del Compito
Immagina di progettare un controllore del semaforo per un incrocio molto trafficato. Il sistema semaforico è composto da tre fasi: luce rossa, luce gialla e luce verde. Queste fasi devono essere eseguite in un ordine specifico per garantire un flusso di traffico sicuro ed efficiente.
Il tuo compito è implementare i metodi: redLight(), yellowLight() e greenLight(). Questi metodi devono essere eseguiti rigorosamente nell'ordine di un vero semaforo: prima la luce rossa, poi la luce gialla e infine la luce verde, indipendentemente dall'ordine in cui i thread li chiamano.
Requisiti:
- Sincronizzazione: Garantire che i metodi vengano eseguiti in ordine rigoroso;
- Multithreading: I metodi possono essere chiamati da thread diversi, ma l'esecuzione deve avvenire nell'ordine:
redLight(),yellowLight()egreenLight(); - Utilizzo di Lock e Condition: Applicare
Lockper controllare l'accesso alle risorse condivise eConditionper coordinare i thread.
Il campo counter nella classe TaskLockExample è specificato per un motivo, sarà necessario verificarne il valore in ogni metodo e, a seconda di ciò che contiene, decidere se avviare o meno questo thread.
È inoltre necessario utilizzare i campi lock e condition per bloccare alcuni thread e decidere chi sarà primo, secondo, terzo.
Una volta implementati i metodi e passati alla classe Main ed eseguito il suo metodo main, dovresti ottenere un output indipendentemente dall'ordine e da quale thread esegue quale metodo.
Inoltre, stampa qualcosa sulla console per verificare se i metodi vengono eseguiti nel corretto ordine.
Puoi anche scambiare l'avvio dei thread (non l'implementazione stessa, ma dove viene chiamato il metodo start() del thread)
Una volta verificato che tutto funzioni correttamente, eseguire i test di verifica nel percorso /src/test/java/TaskLockExampleTest.java.
Grazie per i tuoi commenti!