Giriş Kilidi
![](https://cdn.codegym.cc/images/article/ee2cd199-b06a-4310-93c0-67f113b8ba93/1024.jpeg)
Koşul - kilitlerde koşulların uygulanması, akışlara erişim yönetimi üzerinde kontrol elde etmenizi sağlar. Kilit koşulu,java.util.concurrent.lockspaketindeki Koşul arabiriminin bir nesnesidir . Condition nesnelerini, önceki konulardan birinde tartışılan Object sınıfınınwait/notify/notifyAllkullanmaya birçok yönden benzer
Lock , senkronize edilene kıyasla kaynaklara/bloklara erişimi kısıtlamak için esnek bir yaklaşım sağlayankilit çerçevesindenbir arabirimdirBirkaç kilit kullanırken, serbest bırakılma sırası isteğe bağlı olabilir, ayrıca yapılandırılabilir. Ayrıca, kilit halihazırda yakalanmış durumdayken durumla başa çıkma olasılığı da vardır.
ReentrantLock , Lock arabiriminin uygulamalarından biri olan ReentrantLock sınıfıdır. Aynı iş parçacığının, daha önce çağırmış olsa bile, kilidi serbest bırakmadan, kilit yöntemini çağırmasına izin verir.
ReentrantLock sınıfı , Lock arabiriminin yöntemlerine ek olarak , newCondition() fabrika yöntemine sahiptir . Bu yöntem bir nesne döndürürDurumgeçerli iş parçacığını verilen nesnenin bekleme kümesine eklemenizi sağlayanDurum.
private final Lock R_LOCK = ReentrantLock();
R_LOCK.lock();
try {
//some action happens here
} finally {
R_LOCK.unlock();
}
ReadWriteLock, okuma/yazma kilitleri oluşturmak için bir arabirimdir. Kilitler, bir sistemde çok fazla okuma ve az yazma olduğunda son derece kullanışlıdır.
Çok iş parçacıklı hizmetlerde ve önbelleklerde kullanılan ReentrantReadWriteLock , senkronize bloklara kıyasla güzel bir performans artışına sahiptir. Aslında, sınıf birbirini dışlayan 2 modda çalışır: birçok okuyucu verileri paralel olarak okur ve yalnızca 1 yazar verileri yazdığında.
ReentrantReadWriteLock.ReadLock - okuyucular için readWriteLock.readLock() yoluyla elde edilen okuma kilidi.
ReentrantReadWriteLock.WriteLock - yazarlar için readWriteLock.writeLock() yoluyla elde edilen yazma kilidi.
eşleyici
![](https://cdn.codegym.cc/images/article/cb9ae844-7dce-459b-b8af-55a1830c5fb1/512.jpeg)
AbstractOwnableSynchronizer , senkronizasyon mekanizmaları oluşturmaktan sorumlu temel sınıftır. Verileriniz üzerinde çalışabilen özel bir akışı hatırlamak ve okumak için bir alıcı/ayarlayıcı içerir.
AbstractQueuedSynchronizer , FutureTask, CountDownLatch, Semaphore, ReentrantLock, ReentrantReadWriteLock'taki eşitleme mekanizması için temel sınıftır. Ayrıca, tek ve atomik bir int değerine dayanan yeni eşitleme mekanizmaları oluşturulurken de kullanılır.
AbstractQueuedLongSynchronizer , atomik uzun değeri destekleyen bir AbstractQueuedSynchronizer çeşididir