ReentrantLock

Điều kiện - áp dụng các điều kiện trong khóa cho phép bạn đạt được quyền kiểm soát việc quản lý quyền truy cập vào các luồng. Điều kiện khóa là một đối tượng của giao diện Điều kiện từjava.util.concurrent.locks. Việc sử dụng các đối tượng Điều kiện theo nhiều cách tương tự như sử dụngwait/notify/notifyAlllớp Object đã được thảo luận trong một trong các chủ đề trước.

Khóa là một giao diện từkhung khóacung cấp cách tiếp cận linh hoạt để hạn chế quyền truy cập vào tài nguyên/khối so với đồng bộ hóa. Khi sử dụng một số khóa, thứ tự phát hành của chúng có thể tùy ý, ngoài ra, nó cũng có thể được định cấu hình. Ngoài ra còn có khả năng xử lý tình huống khi khóa đã bị bắt.

ReentrantLock là một trong những triển khai của giao diện Lock , lớp ReentrantLock . Nó cho phép cùng một luồng gọi phương thức khóa, ngay cả khi nó đã gọi nó trước đó mà không giải phóng khóa.

Lớp ReentrantLock , ngoài các phương thức của giao diện Lock , còn có một phương thức xuất xưởng newCondition() . Phương thức này trả về một đối tượngTình trạng, cho phép bạn thêm chuỗi hiện tại vào tập chờ của đối tượng đã choTình trạng.

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

ReadWriteLock là giao diện để tạo khóa đọc/ghi. Khóa cực kỳ hữu ích khi một hệ thống có nhiều lượt đọc và ít lượt ghi.

ReentrantReadWriteLock - được sử dụng trong các dịch vụ và bộ đệm đa luồng, có hiệu suất tăng tốt so với các khối được đồng bộ hóa. Thực tế lớp làm việc theo 2 chế độ loại trừ lẫn nhau: nhiều reader đọc dữ liệu song song và khi chỉ có 1 reader ghi dữ liệu.

ReentrantReadWriteLock.ReadLock - khóa đọc cho người đọc, thu được qua readWriteLock.readLock().

ReentrantReadWriteLock.WriteLock - khóa ghi cho người viết, có được thông qua readWriteLock.writeLock().

bộ đồng bộ hóa

AbstractOwnableSynchronizer là lớp cơ sở chịu trách nhiệm xây dựng các cơ chế đồng bộ hóa. Chứa một getter/setter để ghi nhớ và đọc một luồng độc quyền có thể hoạt động trên dữ liệu của bạn.

AbstractQueuedSynchronizer là lớp cơ sở cho cơ chế đồng bộ hóa trong FutureTask, CountDownLatch, Semaphore, ReentrantLock, ReentrantReadWriteLock. Nó cũng được sử dụng khi tạo các cơ chế đồng bộ hóa mới dựa trên một giá trị int nguyên tử và duy nhất.

AbstractQueuedLongSynchronizer là một biến thể của AbstractQueuedSynchronizer hỗ trợ giá trị nguyên tử dài.