ReentrantLock

Kundisyon - nagbibigay-daan sa iyo ang paglalapat ng mga kundisyon sa mga kandado na makamit ang kontrol sa pamamahala ng pag-access sa mga stream. Ang kundisyon ng lock ay isang object ng interface ng Kondisyon mula sajava.util.concurrent.locks. Ang paggamit ng mga bagay sa Kondisyon ay sa maraming paraan ay katulad ng paggamit ngwait/notify/notifyAll method ng Object class, na tinalakay sa isa sa mga nakaraang paksa.

Ang Lock ay isang interface mulasa framework ng lockna nagbibigay ng nababaluktot na diskarte sa paghihigpit sa pag-access sa mga mapagkukunan/block kumpara sa naka-synchronize. Kapag gumagamit ng ilang mga kandado, ang pagkakasunud-sunod ng kanilang paglabas ay maaaring maging arbitrary, at maaari rin itong i-configure. Mayroon ding posibilidad na pangasiwaan ang sitwasyon kapag nakuha na ang lock.

Ang ReentrantLock ay isa sa mga pagpapatupad ng Lock interface, ang ReentrantLock class. Binibigyang-daan nito ang parehong thread na tawagan ang paraan ng lock, kahit na tinawag nito ito dati, nang hindi binibitiwan ang lock.

Ang ReentrantLock class , bilang karagdagan sa mga pamamaraan ng Lock interface , ay may factory method newCondition() . Ang pamamaraang ito ay nagbabalik ng isang bagayKundisyon, na nagpapahintulot sa iyo na idagdag ang kasalukuyang thread sa hanay ng paghihintay ng ibinigay na bagayKundisyon.

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

ReadWriteLock ay isang interface para sa paglikha ng read/write lock. Ang mga kandado ay lubhang kapaki-pakinabang kapag ang isang sistema ay maraming nabasa at kakaunti ang nagsusulat.

ReentrantReadWriteLock - ginagamit sa mga multi-threaded na serbisyo at cache, ay may magandang performance boost kumpara sa mga naka-synchronize na block. Sa katunayan, gumagana ang klase sa 2 magkaparehong eksklusibong mga mode: maraming mambabasa ang nagbabasa ng data nang magkatulad at kapag 1 manunulat lamang ang nagsusulat ng data.

ReentrantReadWriteLock.ReadLock - basahin ang lock para sa mga mambabasa, nakuha sa pamamagitan ng readWriteLock.readLock().

ReentrantReadWriteLock.WriteLock - write lock para sa mga manunulat, nakuha sa pamamagitan ng readWriteLock.writeLock().

Synchronizer

Ang AbstractOwnableSynchronizer ay ang batayang klase na responsable para sa pagbuo ng mga mekanismo ng pag-synchronize. Naglalaman ng getter/setter na tatandaan at basahin ang isang eksklusibong stream na maaaring gumana sa iyong data.

Ang AbstractQueuedSynchronizer ay ang batayang klase para sa mekanismo ng pag-synchronize sa FutureTask, CountDownLatch, Semaphore, ReentrantLock, ReentrantReadWriteLock. Ginagamit din ito kapag lumilikha ng mga bagong mekanismo ng pag-synchronize na umaasa sa isang solong at atomic int na halaga.

Ang AbstractQueuedLongSynchronizer ay isang variant ng AbstractQueuedSynchronizer na sumusuporta sa atomic long value.