Перейти к содержимому

Условия гонки в многопоточности Java

Jakob Jenkov

0:00 / 0:00

Условия гонки в многопоточности Java

45 160 просмотров · 5 лет назад
Jakob Jenkov
49,5 тыс. подписчиков
45 160 просмотров · 5 лет назад
Состояние гонки — это ситуация, которая может возникнуть, когда два или более потоков обращаются к одним и тем же переменным таким образом, что планирование потоков может повлиять на конечный результат. Два потока «гонятся» за доступ к переменным. Существует два основных шаблона доступа, которые могут привести к состоянию гонки: «проверка-затем-действие» и «чтение-изменение-запись». В этом видео я расскажу об обоих этих причинах. Участок кода, где могут возникнуть условия гонки, называется критической секцией. Для защиты критических секций их необходимо сделать атомарными. В этом видео я также покажу несколько примеров того, как это сделать. Состояние гонки в параллельном программировании может легко привести к ошибкам параллельного выполнения в ваших приложениях, поэтому важно понимать, что такое состояние гонки и как его избежать! Главы: 0:00 Введение в условия гонки 0:54 Пример условия гонки чтения-изменения-записи 8:06 Решение «чтение-изменение-запись» с атомарным синхронизированным блоком 9:47 Один поток пишет, другой поток читает — пример 13:27 Два потока обращаются к одним и тем же объектам, но не записывают данные в одни и те же объекты. 16:24 Пример состояния гонки «проверь, затем действуй» 20:24 Решение «проверь, затем действуй» с атомарным синхронизированным блоком Состояния гонки — текст: http://tutorials.jenkov.com/java-conc... Учебники по многопоточности в Java — текст / видео: http://tutorials.jenkov.com/java-conc...    • Java Concurrency and Multithreading   Модель памяти Java — основы — текст / Видео: http://tutorials.jenkov.com/java-conc...    • The Java Memory Model - The Basics   Java выполняется до гарантии — видео:    • Java Happens Before Guarantee - Java Memor...   Синхронизированная Java — текст / Видео: http://tutorials.jenkov.com/java-conc...    • Java Synchronized - The synchronized keywo...   Java Volatile — текст/видео: http://tutorials.jenkov.com/java-conc...    • Java Volatile   Java Lambda-выражения — текст/ видео: http://tutorials.jenkov.com/java/lamb...    • Java Lambda Expressions