'

§66 Синхронизированный доступ к разделяемым mutable данным

Понравилась презентация – покажи это...





Слайд 0

§66 Синхронизированный доступ к разделяемым mutable данным


Слайд 1

JLS гарантирует, что чтение-запись переменных примитивных типов кроме long, double – атомарно Синхронизация необходима для надежной коммуникации между потоками, и для взаимного исключения Атомарно – не значит синхронизированно


Слайд 2

Hoisting optimization (для не синхронизированных переменных):


Слайд 3

Недостаточно синхронизировать только чтение или только запись


Слайд 4

Менее громоздкое исправление


Слайд 5

++ - не атомарный оператор. На самом деле это ДВЕ операции: прочитать значение, записать значение + 1 Можно исправить это добавив syncronized и убрав volatile Но лучше так:


Слайд 6

Лучший способ избежать подобных проблем: не использовать общие не mutable данные Ограничивайте использование mutable данных внутри одного потока Если все же вы используете общие mutable данные каждый поток должен заботиться о синхронизации чтения/записи.


×

HTML:





Ссылка: