ReentrantLock

Betingelse - anvendelse af betingelser i sluser giver dig mulighed for at opnå kontrol over styringen af ​​adgang til strømme. Låsebetingelsen er et objekt af Condition- grænsefladen frajava.util.concurrent.locks. Brug af Condition- objekterligner på mange måder at brugewait/notify/notifyAll -metoderne i Object- klassen, som blev diskuteret i et af de foregående emner.

Lås er en grænseflade fralåserammerne, der giver en fleksibel tilgang til at begrænse adgangen til ressourcer/blokke sammenlignet med synkroniserede. Når du bruger flere låse, kan rækkefølgen af ​​deres frigivelse være vilkårlig, plus den kan også konfigureres. Der er også mulighed for at håndtere situationen, når låsen allerede er fanget.

ReentrantLock er en af ​​implementeringerne af Lock- grænsefladen, ReentrantLock -klassen. Det giver den samme tråd mulighed for at kalde låsemetoden, selvom den har kaldt den før, uden at frigive låsen.

Klassen ReentrantLock , ud over metoderne i Lock- grænsefladen , har en fabriksmetode newCondition() . Denne metode returnerer et objektTilstand, som giver dig mulighed for at tilføje den aktuelle tråd til ventesættet for det givne objektTilstand.

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

ReadWriteLock er en grænseflade til oprettelse af læse-/skrivelåse. Låse er yderst nyttige, når et system har mange læsninger og få skrivninger.

ReentrantReadWriteLock - bruges i multi-threaded services og caches, har et pænt ydelsesboost sammenlignet med synkroniserede blokke. Faktisk fungerer klassen i 2 gensidigt udelukkende tilstande: mange læsere læser data parallelt, og når kun 1 forfatter skriver data.

ReentrantReadWriteLock.ReadLock - læselås til læsere, opnået via readWriteLock.readLock().

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

Synkronisator

AbstractOwnableSynchronizer er basisklassen, der er ansvarlig for at bygge synkroniseringsmekanismer. Indeholder en getter/setter til at huske og læse en eksklusiv stream, der kan operere på dine data.

AbstractQueuedSynchronizer er basisklassen for synkroniseringsmekanismen i FutureTask, CountDownLatch, Semaphore, ReentrantLock, ReentrantReadWriteLock. Det bruges også, når der skabes nye synkroniseringsmekanismer, der er afhængige af en enkelt og atomær int-værdi.

AbstractQueuedLongSynchronizer er en variant af AbstractQueuedSynchronizer , der understøtter den atomare lange værdi.