ho visto una soluzione con coda FIFO ma utilizzando lock e condition..


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();
		}
	}
qualcuno per favore sa indicarmi una soluzione per i semafori?