ReentrantLock

Kahanan - ngetrapake kahanan ing kunci ngidini sampeyan entuk kontrol babagan manajemen akses menyang aliran. Kondisi kunci minangka obyek antarmuka Kondisi sakajava.util.concurrent.locks. Nggunakake obyek Kondisi ing akeh cara padha karo nggunakakeEnteni/notify/notifyAllkelas Obyek , kang padha rembugan ing salah siji saka topik sadurungé.

Kunci minangka antarmuka sakakerangka kuncising nyedhiyakake pendekatan sing fleksibel kanggo mbatesi akses menyang sumber daya / pamblokiran dibandhingake karo sinkronisasi. Nalika nggunakake sawetara kunci, urutan release bisa sewenang-wenang, plus uga bisa diatur. Ana uga kamungkinan kanggo nangani kahanan nalika kunci wis dijupuk.

ReentrantLock minangka salah sawijining implementasi antarmuka Kunci , kelas ReentrantLock . Iki ngidini thread sing padha nelpon cara kunci, sanajan wis disebut sadurunge, tanpa ngeculake kunci.

Kelas ReentrantLock , saliyane metode antarmuka Kunci , duwe metode pabrik newCondition () . Cara iki ngasilake obyekkahanan, sing ngidini sampeyan nambahake utas saiki menyang set tunggu obyek sing diwenehakekahanan.

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

ReadWriteLock minangka antarmuka kanggo nggawe kunci maca / nulis. Kunci banget migunani nalika sistem akeh maca lan sawetara nulis.

ReentrantReadWriteLock - digunakake ing layanan multi-threaded lan caches, wis ngedongkrak kinerja becik dibandhingake pamblokiran diselarasake. Nyatane, kelas bisa digunakake ing 2 mode eksklusif: akeh sing maca data kanthi paralel lan nalika mung 1 panulis sing nulis data.

ReentrantReadWriteLock.ReadLock - maca kunci kanggo nonton, dijupuk liwat readWriteLock.readLock ().

ReentrantReadWriteLock.WriteLock - nulis kunci kanggo panulis, dijupuk liwat readWriteLock.writeLock ().

Sinkronisasi

AbstractOwnableSynchronizer minangka kelas dhasar sing tanggung jawab kanggo mbangun mekanisme sinkronisasi. Ngandhut getter / setter kanggo ngelingi lan maca stream eksklusif sing bisa digunakake ing data sampeyan.

AbstractQueuedSynchronizer minangka kelas dhasar kanggo mekanisme sinkronisasi ing FutureTask, CountDownLatch, Semaphore, ReentrantLock, ReentrantReadWriteLock. Iki uga digunakake nalika nggawe mekanisme sinkronisasi anyar sing gumantung ing nilai int siji lan atom.

AbstractQueuedLongSynchronizer minangka varian saka AbstractQueuedSynchronizer sing ndhukung nilai dawa atom.