Java Memory Model. Quick introduction.

Post on 15-Aug-2015

45 views 4 download

Transcript of Java Memory Model. Quick introduction.

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!