Ошибки Непротиворечивости памяти (Учебные руководства Java™> Существенные Классы> Параллелизм)


След: Существенные Классы
Урок: Параллелизм
Раздел: Синхронизация
Ошибки Непротиворечивости памяти
Домашняя страница > Существенные Классы > Параллелизм

Ошибки Непротиворечивости памяти

Ошибки непротиворечивости памяти происходят, когда у различных потоков есть непоследовательные представления того, что должно быть теми же самыми данными. Причины ошибок непротиворечивости памяти сложны и вне контекста этого учебного руководства. К счастью, программист не нуждается в подробном понимании этих причин. Все, что необходимо, является стратегией ухода от них.

Ключ к уходу от ошибок непротиворечивости памяти понимает происхождение - перед отношением. Это отношение является просто гарантией, что записи памяти одним определенным оператором видимы к другому определенному оператору. Чтобы видеть это, рассмотрите следующий пример. Предположите простое int поле определяется и инициализируется:

int counter = 0;

counter поле совместно используется двумя потоками, A и B. Предположите поток инкременты counter:

counter++;

Затем, вскоре после этого, распараллельте B, распечатывает counter:

System.out.println(counter);

Если бы эти два оператора были выполнены в том же самом потоке, было бы безопасно предположить, что распечатанное значение будет "1". Но если эти два оператора выполняются в отдельных потоках, распечатанное значение могло бы хорошо быть "0", потому что нет никакой гарантии, которые распараллеливают изменение А к counter будет видимо, чтобы распараллелить B — если программист не установил происхождение - перед отношением между этими двумя операторами.

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

Мы уже видели два действия, которые создают, происходит - перед отношениями.

Для списка действий, которые создают, происходит - перед отношениями, обратитесь к Сводной странице java.util.concurrent пакет..


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Интерференция Потока
Следующая страница: Синхронизируемые Методы



Spec-Zone.ru - all specs in one place