Введение
На этом мы завершаем серию синхронизаций.Эта статья суммирует серию синхронизаций.
карта мозга
Ниже приводится карта мозга о серии синхронизации, в которой перечислены основные моменты знаний и проблемные моменты Учащиеся, прочитавшие эту серию статей, могут повторить то, что они узнали, на основе карты мозга, а также могут быть использованы в качестве подготовки к интервью.
Если есть студенты, которым нужны оригинальные изображения высокой четкости без цензуры, вы можете подписаться на общедоступную учетную запись «Исходный код Tongge Read» и ответить «синхронизировать», чтобы получить его.
Суммировать
так называемая синхронизация, заключается в том, чтобы гарантировать, что многопоточные (включая многопроцессорные) операции чтения и записи в общие ресурсы могут выполняться безопасно и эффективно.
В соответствии с различными сценариями приложений синхронизации способ достижения синхронизации также меняется вместе, но в целом между этими методами реализации есть некоторые общие черты.
Будь то мьютекс, блокировка чтения-записи, семафор, CountDownLatch, петлевой барьер, Phaser или различные распределенные блокировки, все они основаны на управлении одной и той же общей переменной (переменной состояния) для достижения синхронизации. .
Мьютекс, если состояние больше или равно 1 (реентерабельный), значит заблокировано, а если состояние 0, значит не заблокировано;
Блокировка чтения-записи, старшие 16 бит состояния хранят количество операций чтения [эта статья изначально была создана общедоступной учетной записью «Tong Ge Read Source Code»], а младшие 16 бит хранят количество операций записи;
сигнал, количество раз, когда государственная лицензия на хранилище использовалась, минус одна лицензия после использования и плюс одна лицензия после выпуска;
CountDownLatch, состояние сохраняет начальное количество раз, число countDown() уменьшается на единицу, а await() активируется, когда число уменьшается до 0;
задний забор, основанный на реализации ReentrantLock, что эквивалентно добавлению концепции «генерации» в CountDownLatch для обеспечения возможности повторного использования;
Phaser, старшие 32 бита состояния хранят текущую фазу фазы, средние 16 бит хранят количество участников (задач) в текущей фазе, а младшие 16 бит хранят количество не прибывших участников.Участники каждой фазы могут контролировать, относительно Петлевой забор более гибкий;
распределенная блокировка mysql, получение на основе базы данныхlock()/releaselock() управляет общими переменными;
распределенный замок зоопарка, который управляет общими переменными на основе упорядоченных временных узлов;
распределенная блокировка redis, который управляет общими переменными на основе пар ключ-значение в памяти;
Подводя итог, есть только один ключевой фактор для всех синхронизаторов - общие переменные. Пока общие переменные можно точно контролировать, синхронизация может быть достигнута. В будущем появятся новые компоненты. Мы также можем использовать новые компоненты для достижения раздача по такому принципу Синхронизатор.
пасхальные яйца
В следующей серии мы узнаем об очках знаний, связанных с потоками (пулами), так что следите за обновлениями!
Рекомендуемое чтение
1,Открытие серии java-синхронизации мертвых приседаний
2,Небезопасный анализ мертвого магического класса Java
3.JMM (модель памяти Java) из мертвой серии синхронизации Java
4.Неустойчивый анализ мертвой серии синхронизации Java
5.Синхронный анализ мертвой серии синхронизации Java
6.Напишите блокировку самостоятельно в серии «Синхронизация Java»
7.Начало AQS в серии синхронизации Java
9,ReentrantLock Анализ исходного кода мертвой серии синхронизации Java (2) — условная блокировка
10.ReentrantLock VS синхронизирован в серии синхронизации java
11.Анализ исходного кода ReentrantReadWriteLock мертвой серии синхронизации Java
12.Анализ исходного кода семафора серии Dead Java Synchronization
13.Анализ исходного кода CountDownLatch серии Dead Java Synchronization
14.Заключительная глава AQS в серии о синхронизации Java.
15.Анализ исходного кода StampedLock мертвой серии синхронизации Java
16.Анализ исходного кода CyclicBarrier мертвой серии синхронизации java
17.Анализ исходного кода Phaser для серии синхронизации Java с мертвым стуком
18.Распределенная блокировка mysql серии синхронизации java в тупике
19.Zookeeper раздал блокировку мертвой серии синхронизации java
20.История развития распределенных блокировок Redis в серии синхронизации Java
Добро пожаловать, чтобы обратить внимание на мою общедоступную учетную запись «Брат Тонг читает исходный код», проверить больше статей из серии исходного кода и поплавать в океане исходного кода с братом Тонгом.