ReentrantLock

Tilstand - å bruke betingelser i låser lar deg oppnå kontroll over administrasjonen av tilgang til strømmer. Låsebetingelsen er et objekt i Condition- grensesnittet frajava.util.concurrent.locks. Å bruke Condition- objekterligner på mange måter å brukewait/notify/notifyAll -metodene i Object- klassen, som ble diskutert i et av de tidligere emnene.

Lås er et grensesnitt fralåsrammeverketsom gir en fleksibel tilnærming til å begrense tilgang til ressurser/blokker sammenlignet med synkroniserte. Når du bruker flere låser, kan rekkefølgen på deres utløsning være vilkårlig, pluss at den også kan konfigureres. Det er også mulighet for å håndtere situasjonen når låsen allerede er fanget.

ReentrantLock er en av implementeringene av Lock- grensesnittet, ReentrantLock -klassen. Den lar den samme tråden kalle låsemetoden, selv om den har kalt den før, uten å frigjøre låsen.

Klassen ReentrantLock , i tillegg til metodene til Lock- grensesnittet , har en fabrikkmetode newCondition() . Denne metoden returnerer et objektBetingelse, som lar deg legge til gjeldende tråd til ventesettet til det gitte objektetBetingelse.

private final Lock R_LOCK = ReentrantLock();
R_LOCK.lock();
try {
   //some action happens here
} finally {
   R_LOCK.unlock();
}

ReadWriteLock er et grensesnitt for å lage lese-/skrivelåser. Låser er ekstremt nyttige når et system har mye lesing og få skrivinger.

ReentrantReadWriteLock - brukt i multi-threaded tjenester og cacher, har et fint ytelsesløft sammenlignet med synkroniserte blokker. Faktisk fungerer klassen i 2 gjensidig utelukkende moduser: mange lesere leser data parallelt og når bare 1 forfatter skriver data.

ReentrantReadWriteLock.ReadLock - leselås for lesere, hentet via readWriteLock.readLock().

ReentrantReadWriteLock.WriteLock - skrivelås for forfattere, hentet via readWriteLock.writeLock().

Synkronisator

AbstractOwnableSynchronizer er basisklassen som er ansvarlig for å bygge synkroniseringsmekanismer. Inneholder en getter/setter for å huske og lese en eksklusiv strøm som kan operere på dataene dine.

AbstractQueuedSynchronizer er basisklassen for synkroniseringsmekanismen i FutureTask, CountDownLatch, Semaphore, ReentrantLock, ReentrantReadWriteLock. Den brukes også når du lager nye synkroniseringsmekanismer som er avhengige av en enkelt og atomær int-verdi.

AbstractQueuedLongSynchronizer er en variant av AbstractQueuedSynchronizer som støtter den atomære lange verdien.