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.
GO TO FULL VERSION