ReentrantLock

Keadaan - menggunakan syarat dalam kunci membolehkan anda mencapai kawalan ke atas pengurusan akses kepada strim. Keadaan kunci ialah objek antara muka Keadaan daripadajava.util.concurrent.locks. Menggunakan objek Keadaan dalam banyak cara serupa dengan menggunakantunggu/maklumkan/maklumkanSemuakelas Objek , yang telah dibincangkan dalam salah satu topik sebelumnya.

Kunci ialah antara muka daripadarangka kerja kunciyang menyediakan pendekatan yang fleksibel untuk menyekat akses kepada sumber/blok berbanding dengan disegerakkan. Apabila menggunakan beberapa kunci, susunan pelepasannya boleh sewenang-wenangnya, ditambah ia juga boleh dikonfigurasikan. Terdapat juga kemungkinan untuk mengendalikan keadaan apabila kunci sudah ditangkap.

ReentrantLock ialah salah satu pelaksanaan antara muka Lock , kelas ReentrantLock . Ia membenarkan benang yang sama memanggil kaedah kunci, walaupun ia telah memanggilnya sebelum ini, tanpa melepaskan kunci.

Kelas ReentrantLock , sebagai tambahan kepada kaedah antara muka Lock , mempunyai kaedah kilang newCondition() . Kaedah ini mengembalikan objekkeadaan, yang membolehkan anda menambah benang semasa pada set tunggu objek yang diberikankeadaan.

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

ReadWriteLock ialah antara muka untuk mencipta kunci baca/tulis. Kunci amat berguna apabila sistem mempunyai banyak bacaan dan sedikit tulisan.

ReentrantReadWriteLock - digunakan dalam perkhidmatan berbilang benang dan cache, mempunyai peningkatan prestasi yang bagus berbanding dengan blok disegerakkan. Malah, kelas berfungsi dalam 2 mod yang saling eksklusif: ramai pembaca membaca data secara selari dan apabila hanya 1 penulis menulis data.

ReentrantReadWriteLock.ReadLock - baca kunci untuk pembaca, diperoleh melalui readWriteLock.readLock().

ReentrantReadWriteLock.WriteLock - kunci tulis untuk penulis, diperoleh melalui readWriteLock.writeLock().

Penyegerak

AbstractOwnableSynchronizer ialah kelas asas yang bertanggungjawab untuk membina mekanisme penyegerakan. Mengandungi getter/setter untuk diingati dan membaca strim eksklusif yang boleh beroperasi pada data anda.

AbstractQueuedSynchronizer ialah kelas asas untuk mekanisme penyegerakan dalam FutureTask, CountDownLatch, Semaphore, ReentrantLock, ReentrantReadWriteLock. Ia juga digunakan apabila mencipta mekanisme penyegerakan baharu yang bergantung pada nilai int tunggal dan atom.

AbstractQueuedLongSynchronizer ialah varian AbstractQueuedSynchronizer yang menyokong nilai panjang atom.