ReentrantLock

เงื่อนไข - การใช้เงื่อนไขในการล็อคช่วยให้คุณสามารถควบคุมการจัดการการเข้าถึงสตรีมได้ เงื่อนไขการล็อคเป็นวัตถุของ อินเตอร์เฟส Conditionจากjava.util.concurrent.locks การใช้ วัตถุเงื่อนไขมีหลายวิธีคล้ายกับการใช้เมธอดwait/แจ้งเตือน/แจ้งเตือนทั้งหมดคลาส Objectซึ่งได้กล่าวถึงในหัวข้อก่อนหน้านี้

Lockเป็นอินเทอร์เฟซจากกรอบการล็อกที่ให้แนวทางที่ยืดหยุ่นในการจำกัดการเข้าถึงทรัพยากร/บล็อก เมื่อเทียบกับการซิงโครไนซ์ เมื่อใช้ล็อคหลายตัว ลำดับการปลดล็อคสามารถกำหนดได้ตามอำเภอใจ อีกทั้งยังสามารถกำหนดค่าได้อีกด้วย นอกจากนี้ยังมีความเป็นไปได้ในการจัดการกับสถานการณ์เมื่อจับล็อคได้แล้ว

ReentrantLockเป็นหนึ่งในการใช้งานเท อร์เฟ ซ Lock ซึ่ง เป็นคลาส ReentrantLock อนุญาตให้เธรดเดียวกันเรียกใช้เมธอดการล็อก แม้ว่าจะมีการเรียกก่อนหน้านี้ โดยไม่คลายการล็อก

คลาสReentrantLockนอกจากเมธอดของ อินเทอร์ เฟซล็อคแล้ว ยังมีเมธอดโรงงานnewCondition() เมธอดนี้ส่งคืนวัตถุเงื่อนไขซึ่งอนุญาตให้คุณเพิ่มเธรดปัจจุบันไปยังชุดการรอของวัตถุที่กำหนดเงื่อนไข.

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

ReadWriteLockเป็นอินเทอร์เฟซสำหรับสร้างล็อคการอ่าน/เขียน การล็อกมีประโยชน์อย่างยิ่งเมื่อระบบมีการอ่านจำนวนมากและเขียนน้อย

ReentrantReadWriteLock - ใช้ในบริการและแคชแบบมัลติเธรด มีการเพิ่มประสิทธิภาพที่ดีเมื่อเทียบกับบล็อกที่ซิงโครไนซ์ ในความเป็นจริงคลาสทำงานใน 2 โหมดพิเศษร่วมกัน: ผู้อ่านหลายคนอ่านข้อมูลแบบขนานและเมื่อผู้เขียนเพียง 1 คนเขียนข้อมูล

ReentrantReadWriteLock.ReadLock - ล็อกการอ่านสำหรับผู้อ่าน ซึ่งได้รับผ่าน readWriteLock.readLock()

ReentrantReadWriteLock.WriteLock - ล็อคการเขียนสำหรับผู้เขียน ได้รับผ่าน readWriteLock.writeLock()

ซิงโครไนเซอร์

AbstractOwnableSynchronizerเป็นคลาสพื้นฐานที่รับผิดชอบในการสร้างกลไกการซิงโครไนซ์ ประกอบด้วย getter/setter เพื่อจดจำและอ่านสตรีมพิเศษที่สามารถทำงานกับข้อมูลของคุณได้

AbstractQueuedSynchronizerเป็นคลาสพื้นฐานสำหรับกลไกการซิงโครไนซ์ใน FutureTask, CountDownLatch, Semaphore, ReentrantLock, ReentrantReadWriteLock นอกจากนี้ยังใช้เมื่อสร้างกลไกการซิงโครไนซ์ใหม่ที่ใช้ค่าเดียวและค่า atomic int

AbstractQueuedLongSynchronizerเป็นตัวแปรของ AbstractQueuedSynchronizerที่รองรับค่า Atomic Long