Różnica między semaforem a stanem (ReentrantLock)

Czy ktoś zna różnice między metodamiacquire () irelease () (java.util.concurrent.Semaphore) iawait () isignal (new ReentrantLock().newCondition() ) .

Czy możesz ujawnić pseudo kod dla każdej z tych metod?