
Операционная среда этого руководства: система Windows7, версия Java10, компьютер DELL G3.
1. Концепция
Реентерабельная блокировка чтения-записи . Блокировка чтения-записи поддерживает внутренние блокировки чтения и записи . Нижний уровень по-прежнему является AQS, но AQS имеет только одну величину состояния. Как управлять чтением и записью одновременно. состояния (int) здесь используется бит представляет статус чтения, младшие 16 бит представляют запись, старшие 16 бит представляют количество потоков, получивших блокировку чтения, а младшие 16 бит представляют номер повторного входа блокировки записи. .
2. Принцип
Реализовано с использованием очереди CAS+AQS . Он поддерживает справедливые и нечестные блокировки, и их реализация аналогична.
3. Примеры
публичный класс ReentrantDemo реализует Runnable {
Блокировка блокировки = новый ReentrantLock();
@Override
общественный недействительный запуск () {
набор();
}
общественный недействительный набор () {
пытаться {
блокировка.блокировка();
System.out.println("установить метод");
получать();
} catch (Исключение е) {
е.printStackTrace();
} окончательно {
lock.unlock();//Должно быть освобождено наконец }
}
общественная недействительность get() {
пытаться {
блокировка.блокировка();
System.out.println("получить метод");
} catch (Исключение е) {
е.printStackTrace();
} окончательно {
блокировка.разблокировка();
}
}
public static void main(String[] args) {
ReentrantDemo reentrantDemo = новый ReentrantDemo();
новый поток (reentrantDemo).start();
}
}Выше приведен реентерабельный тест Java ReentrantLock. Я считаю, что после прочтения всей статьи каждый сможет изначально понять использование ReentrantLock, а также вы сможете расширить связанное с ним содержимое реентерабельной блокировки после класса.