ReentryLock

Voorwaarde - door voorwaarden toe te passen in sloten kunt u controle krijgen over het beheer van toegang tot streams. De vergrendelingsvoorwaarde is een object van de interface Voorwaarde uit hetjava.util.concurrent.locks. Het gebruik van Condition- objectenlijkt in veel opzichten op het gebruik van dewait/notify/notifyAll van de klasse, die in een van de vorige onderwerpen is besproken.

Lock is een interface vanhet lock-frameworkdie een flexibele benadering biedt voor het beperken van de toegang tot bronnen/blokken in vergelijking met gesynchroniseerd. Bij gebruik van meerdere sloten kan de volgorde van ontgrendeling willekeurig zijn en kan deze ook worden geconfigureerd. Er is ook de mogelijkheid om de situatie aan te pakken wanneer het slot al is vastgelegd.

ReentrantLock is een van de implementaties van de Lock- interface, de klasse. Hiermee kan dezelfde thread de vergrendelingsmethode aanroepen, zelfs als deze deze eerder heeft aangeroepen, zonder de vergrendeling op te heffen.

De klasse ReentrantLock heeft naast de methoden van de Lock- interface een fabrieksmethode newCondition() . Deze methode retourneert een objectVoorwaarde, waarmee u de huidige thread kunt toevoegen aan de wachtset van het gegeven objectVoorwaarde.

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

ReadWriteLock is een interface voor het maken van lees-/schrijfvergrendelingen. Sloten zijn uitermate handig wanneer een systeem veel leest en weinig schrijft.

ReentrantReadWriteLock - gebruikt in multi-threaded services en caches, heeft een mooie prestatieverbetering in vergelijking met gesynchroniseerde blokken. In feite werkt de klasse in 2 elkaar uitsluitende modi: veel lezers lezen gegevens parallel en wanneer slechts 1 schrijver gegevens schrijft.

ReentrantReadWriteLock.ReadLock - leesvergrendeling voor lezers, verkregen via readWriteLock.readLock().

ReentrantReadWriteLock.WriteLock - schrijfvergrendeling voor schrijvers, verkregen via readWriteLock.writeLock().

Synchro

AbstractOwnableSynchronizer is de basisklasse die verantwoordelijk is voor het bouwen van synchronisatiemechanismen. Bevat een getter/setter om een ​​exclusieve stream te onthouden en te lezen die op uw gegevens kan werken.

AbstractQueuedSynchronizer is de basisklasse voor het synchronisatiemechanisme in FutureTask, CountDownLatch, Semaphore, ReentrantLock, ReentrantReadWriteLock. Het wordt ook gebruikt bij het maken van nieuwe synchronisatiemechanismen die afhankelijk zijn van een enkele en atomaire int-waarde.

AbstractQueuedLongSynchronizer is een variant van AbstractQueuedSynchronizer die de atomaire lange waarde ondersteunt.