java memory model. quick introduction
Post on 15-Aug-2015
50 Views
Preview:
TRANSCRIPT
Java Memory ModelQuick introduction
Юрий Кисляк @ EIS Group
Agenda
- Program Order- Memory Model- Sequentially consistent- Synchronization Action- Synchronization Order- Synchronized With- Happens Before
Как выполняется наш код?
Как выполняется мой код?
Ожидание Реальность
Как выполняется наш код?
Как выполняется мой код?
Ожидание Реальность
Program order (PO)
Как выполняется наш код?
*example
Как выполняется мой код?
Ожидание Реальность
Program order (PO)
Reordering: (sh)it happens...
Кто виноват?
1. Compiler (javac, JIT)2. Runtime3. Hardware
Что делать?
Memory ModelОтвечает на вопрос:
Какие данные я смогу увидеть в конкретной точке выполнения
программы?
Что делать?
Memory ModelОтвечает на вопрос:
Какие данные я смогу увидеть в конкретной точке выполнения
программы? - Видимость- Порядок (допустимые оптимизации)
- Атомарность
Атомарность
Атомарность
Атомарность
Какие данные я смогу увидеть в конкретной точке выполнения
программы?
- Видимость- Атомарность- Порядок
Java memory model
Before java 5.0: “Once upon a time…”
Java memory model
Before java 5.0: “Once upon a time…”
After java 5.0: “JSR 133”
https://www.cs.umd.edu/~pugh/java/memoryModel/jsr133.pdf
Agenda
- Program Order- Memory Model- Sequential consistency- Synchronization Action- Synchronization Order- Synchronized With- Happens Before
Sequentially consistent
1. В каждый момент времуни выполняется одна операция
2. Каждая операция видит результат всех прдыдущих
3. Порядок выполения согласован с порядком программы (program order)
Sequentially consistent - непригодна
Data race
Sequentially consistent - непригодна
1. Несколько потоков одновременно обращаются к переменной.
2. Один из потоков пишет.3. Нет синхронизации.
* не путать с race condition
Data race
Agenda
- Program Order- Memory Model- Sequentially consistent- Synchronization Action- Synchronization Order- Synchronized With- Happens Before
Syncronization
JMM: relaxed model
● “Обычные”инструкцииупорядочены внутри своего потока
● Synchronization actionsупорядочены глобально между всеми потоками
JMM: relaxed model
● “Обычные”инструкцииупорядочены внутри своего потока
● Synchronization actionsупорядочены глобально между всеми потоками
Synchronization order
* не запоминаем этот слайд
Agenda
- Program Order- Memory Model- Sequentially consistent- Synchronization Action- Synchronization Order- Synchronized With- Happens Before
Synchronized-with (partial order)
● v-read(a) -SW-> [следующий в SO] v-write(a)● lock(m) -SW-> [следующий в SO] unlock(m)
Synchronized-with (partial order)
● v-read(a) -SW-> [следующий в SO] v-write(a)● lock(m) -SW-> [следующий в SO] unlock(m)
Happens-before (partial order)
HB = {PO,SW}+ (транзитивное замыкание)
Happens-before (partial order)
HB = {PO,SW}+ (транзитивное замыкание)
Happens-before (partial order)
HB = {PO,SW}+ (транзитивное замыкание)
Happens-before Visibility
Happens-before Visibility
SW
SW
SWu=7;
u != 7 &&
SW
SW
SW
Agenda
- Program Order- Memory Model- Sequentially consistent- Synchronization Action- Synchronization Order- Synchronized With- Happens Before
Agenda
- Program Order- Memory Model- Sequentially consistent- Synchronization Action- Synchronization Order- Synchronized With- Happens Before
Ta-da!
top related