Как JVM удостоверится, что потоки получают блокировку после ввода синхронизированного метода объекта?Внутренняя реализация синхронного ключевого слова
ответ
Для координации доступа к общим данным между несколькими потоками виртуальная машина Java связывает блокировку с каждым объектом и классом. Блокировка подобна привилегии, что только один поток может «обладать» в любой момент времени. Если поток хочет заблокировать определенный объект или класс, он запрашивает JVM. В какой-то момент после того, как поток запрашивает JVM для блокировки - возможно, очень скоро, может быть, позже, возможно, никогда - JVM не дает блокировку потоку. Когда поток больше не нуждается в блокировке, он возвращает его в JVM. Если другой поток запросил одну и ту же блокировку, JVM передает блокировку этому потоку.
Заканчивать всю статью для получения дополнительной информации: http://www.javaworld.com/article/2076971/java-concurrency/how-the-java-virtual-machine-performs-thread-synchronization.html
Broad вопрос:
Как виртуальная машина убедитесь, что ...?
«VM» в «JVM» означает «виртуальная машина». Ваш код ничего не делает сам по себе. Когда мы говорим, что «ваш код работает», мы действительно имеем в виду, что JVM выполняет вашими инструкциями. И это делается в соответствии с правилами, изложенными в спецификации JVM. Одно из правил гласит, что JVM никогда не должен выполнять синхронизированный блок для двух разных потоков на одном и том же объекте одновременно.
Но есть много слоев к луке: A typeical JVM использует собственные потоки (то есть потоки, предоставляемые операционной системой) для выполнения Java-потоков, и это, как правило, опирается на объекты мьютекса, предоставляемые операционной системой для синхронизации потоки.
Идет еще глубже, ни JVM, ни операционная система действительно ничего не делают сами по себе: это компьютерное оборудование , выполняющее инструкции ОС и JVM, которые действительно заставляют вещи произойти.
Полный ответ на вопрос «как работает синхронизация?». представляет собой пару глав из книги о дизайне операционной системы, а также пару глав из книги по компьютерной архитектуре, а также компьютерную науку сбоку. Чтобы полностью понять все это, вы по крайней мере будете знать о:
-
«инструкции пользовательского режима»
- vs. «льготной инструкции режима»,
- Как система вызывает работу,
- Как в операционную системный «планировщик» выполняет «Контекстные коммутаторы»
- примитивы синхронизации оборудования, такие как «Сравнение и замена (CAS)», «Test and Set (TAS)», «load-link/store-conditional (LL/SC)»
Все они являются предметами, которые вы можете найти в Wik ipedia, но ИМО, книги лучше изучают предмет этой глубины.
- 1. Реализация ключевого слова в C#
- 2. Реализация виртуальных функций без виртуального ключевого слова
- 3. реализация ключевого слова по умолчанию в C#
- 4. Внутренняя реализация AsEnumerable() в LINQ
- 5. Понимание Внутренняя реализация hashmap
- 6. Внутренняя реализация метода ServerSocket.accept()?
- 7. Внутренняя реализация TreeMap
- 8. Внутренняя реализация ArrayList
- 9. MongoDB Внутренняя реализация индексации?
- 10. внутренняя реализация случайного()
- 11. Внутренняя реализация BroadcastReCeiver
- 12. [SQLAlchemy] SyntaxError: без ключевого слова агда после ключевого слова арг
- 13. PostgreSQL подсчет частоты каждого ключевого слова в матче ключевого слова
- 14. SQLAlchemy SyntaxError: ARG без ключевого слова после ключевого слова арг
- 15. SyntaxError: без ключевого слова аргумента после аргумента ключевого слова
- 16. без ключевого слова агд после ключевого слова арг
- 17. Использование конечного ключевого слова
- 18. imacros проверка ключевого слова
- 19. Создание символа ключевого слова
- 20. Поиск ключевого слова Wordpress
- 21. измерение ключевого слова clickstream
- 22. Использование ключевого слова Extern
- 23. ошибка ключевого слова Ruby
- 24. использование секретного ключевого слова
- 25. Google - Проверка ключевого слова
- 26. volatile использование ключевого слова
- 27. Использование ключевого слова Даты
- 28. Значение ключевого слова javascript
- 29. Использование AWAIT ключевого слова
- 30. Использование этого ключевого слова