ho visto una soluzione con coda FIFO ma utilizzando lock e condition..
qualcuno per favore sa indicarmi una soluzione per i semafori?codice:public void entra() throws InterruptedException { l.lock(); try { vettureInAttesa.add(Thread.currentThread()); //LinkedList while (!mioTurno()) { postoLibero.await(); } vettureInAttesa.removeFirst(); numPostiLiberi--; } finally { l.unlock(); } } private boolean mioTurno() { return numPostiLiberi > 0 && vettureInAttesa.getFirst().equals(Thread.currentThread()); } public void libera() { l.lock(); try { numPostiLiberi++; postoLibero.signalAll(); } finally { l.unlock(); } }

Rispondi quotando