Java Threads (Потоки) - Synchronized vs Volatile

preview_player
Показать описание
00:12 Для чего используется Volatile?
00:49 Пример использования Volatile переменной
01:06 Использование Synchronized Java потоки
02:07 Разница между Synchronized и Volatile
02:56 Как использовать Synchronized и Volatile
03:36 Когда следует использовать Volatile переменную?

В этом уроке я говорю о таком нюансе использования потоков(Thread) и синхронизации как видимость переменных. Я сравниваю Synchronized и volatile. Кто же победит в схватке Synchronized vs volatile.

Более подробно об этих вещах можно прочитать в книге java concurrency in practice

Хотите повлиять на темы сюжетов? Вам сюда
Рекомендации по теме
Комментарии
Автор

Почему на этом канале так много хейта в комментах?
По - моему человек старается, видно что от видео к видео становится лучше, даже таймкод написан)
СПАСИБО

agnia.starovoitova
Автор

у volitile есть ещё одна важная фишка -  все операции в блоке до записи в volitile variable происходят именно строго ДО, т.е. reordering процессором/jvm не может "перепрыгнуть" эту операцию(запись в volitile variable).
 int a = 0;
volitive boolean v = false
..
 a = 1;
 v = true
..
if (v) {
 System.ouyt.println(a); // стабильно 1
}

в случае если бы "v" вылабы не volitile - мы не моглы бы этого гарантировать.

reoredering - изменения порядка операций при исполнении.  

RedJabber
Автор

всегда интересно преподносиш материал, спасибо!

mqxkdru
Автор

по поводу 1 пункта - какой тогда смысл в volatile, если с переменной будет взаимодействовать только один поток?

denys
Автор

Спасибо за видео, но правда быстро так рассказываешь, понятно что ты профессионал и "ну тут всё понятно (С)" для тебя, но тяжело уловить когда смотрит не особо подготовленный человек((((

artyomzolotoverkhov
Автор

А вот такой интересный вопрос - не сможете пояснить - почему нельзя расшарить какое то поле через static? Был бы очень признателен.

rbtljbj
Автор

В примере с boolean используется volatile. Далее 2.20: чтение и запись ссылочных данных и примитивов, кроме long и double - атомарные операции. Из этого следует, что volatile нужен только для long и double, и непонято тогда, как это все применимо к boolean, если он примитивный тип и не является ни long, ни double. Поясните, пожалуйста

vfvhxqf
Автор

Супер! Выкладывайте больше видео) Про множества еще если можно выложите пожалуйста. 

mycanalcool