Параллельное программирование -synchronized

Что синхронизируется замок?

 Блокировка объекта, который может включать в себя: это критический объект ресурс, объект класса класса

Блокировка лежащий в основе реализации

Синхронизация синхронизации блока монитора на основе ввода и контролировать команды выхода,

Косвенно реализовать метод синхронизации, основанный на методе чтения флага ACC_SYNCHRONIZED выполнения постоянного бассейна.

Состав памяти объекта

Заголовок объекта: хэш-код \ блокировки информации \ информационного GC \ хранения указательного типа объекта

переменные экземпляра

Набивка данные: начальный адрес требований целевой виртуальной машины должен быть целым кратным 8 байт. незначащие данные не должны присутствовать, только для выравнивания байтов.

процесс внедрения

При выполнении синхронизируются или синхронизируются блок-метод синхронизации, метка блокировки записи, монитор блокировки объекта метку, указывающую на начальный адрес в заголовке объекта.

monotor объекты: Каждый объект, связанный с наличием монитора, монитор может создать или уничтожить автоматически генерируется, когда поток пытается получить объект блокировку вместе с объектом. Когда объект монитор удерживается на волоске, он находится в заблокированном состоянии

ObjectMonotor монитор реализован. ObjectMonitor включает в себя: _owner маркер, две очереди, _waitSet \ _entryList

Когда поток одновременно получать доступ и тот же код синхронизации, сначала входит _entryList, когда нить приобретает флаг блокировки, _owner записать эту нить, монитор и операция Счетчик +1 выполняется от имени замка. И продолжает блокировать другие потоки в _entryList в.

Если выполнение потока вызывает метод ожидания, счетчик устанавливается в мониторе 0, _owner установлен отказаться от блокировки имеет нулевое значение, от имени, поток выполнения вошел в waitset заблокирован.

Если выполнение потока вызовов уведомит \ notifyAll, _waitset нить просыпается, введите _entryList в заблокирован в ожидании, чтобы приобрести марку замка.

Если код синхронизации выполнения выполнение потока завершается, выпустит знак блокировки, счетчик устанавливается для контроля 0, _owner установлено нулевое значение

 

рекомендация

отwww.cnblogs.com/yintingting/p/11424306.html