14. JAVA. Memory Model | Технострим

  Рет қаралды 40,653

VK Team

VK Team

8 жыл бұрын

«Технотрек Mail.ru Group» при МФТИ.
Курс «Разработка на Java».
Лекция №14: Memory model.
Лектор: Дмитрий Архангельский.
Цель курса - создание рабочего приложения, получение необходимых навыков и опыта в области разработки программного обеспечения. По окончании курса студенты должны знать синтаксис и основные библиотеки языка Java, понимать объектно-ориентированный подход, уметь декомпозировать сложные задачи.
Получаемые навыки:
• основные конструкции языка, объекты и классы;
• ввод и вывод в Java - консольный, файловый, сетевой;
• интерфейсы и абстрактные классы, анонимные классы;
• лямбда-функции;
• сетевое взаимодействие, сокеты;
• механизм исключений;
• проверяемые и непроверяемые исключения;
• потоки - жизненный цикл, прерывание;
• критическая секция;
• проблемы взаимодействия (дедлок);
• механизм wait/notify, блокирующие очереди producer/consumer;
• коллекции, выбор структуры данных, подходящей для задачи;
• параметризованные коллекции;
• параметризация в Java.
Смотрите также:
•Другие лекции этого курса: bit.ly/1QUmj1W
•Курс «Основы мобильной разработки»: bit.ly/1LYYV6w
• Курс «Основы веб-разработки»: bit.ly/1RWWKQb
VK Team - это миллион возможностей проявить себя. Мы делаем современные и быстрые интернет-сервисы, доступные каждому. На этом канале делимся опытом компании VK, рассказываем о технологиях, наших образовательных проектах и жизни команды.
😎 Сообщество ВКонтакте: vkteam
👨‍🎓 VK Образование: education.vk.company
🏆 Чемпионаты: cups.online/
👨‍💻 Карьера в VK: team.vk.company/

Пікірлер: 30
@OlegPetrow-dp1vp
@OlegPetrow-dp1vp Жыл бұрын
Крутая лекция, спасибо!
@NikolayMishin
@NikolayMishin 7 жыл бұрын
Спасибо, одна из самых понятных лекций про java memory model!
@Flaer1985
@Flaer1985 8 жыл бұрын
как-то коротко получилось. как-будто не хватает части ₽лекции
@nikolairomanov6054
@nikolairomanov6054 8 жыл бұрын
Разве возможен реордеринг в ситуации r2 = B B = 1 ? (5:45) если бы в одном потоке выполнялся код A=1 B=1 r1 = A r2 = B То да - мы не могли бы сказать наверняка что произойдёт раньше - запись в r1 или в r2 и тогда поток Thread2 { if(r2==1) assert r1 == 1 } мог бы упасть. но первый случай даже с учетом абстракции выглядит странно
@asdfhajdkflhasdfjlhadfqer
@asdfhajdkflhasdfjlhadfqer 7 жыл бұрын
Reordering в данном случае действительно выглядит странно. Можно предположить, что должно было быть t1 -> [r1 = A; B = 1] t2 -> [r2 = B; A = 1]
@user-uh8nb2vj4f
@user-uh8nb2vj4f 6 жыл бұрын
Конечно не возможен, эти операции всегда будут в том порядке, в котором они идут. Вот если было бы: r2 = A B = 1 тогда реордеринг мог бы быть
@kenshin45736
@kenshin45736 5 жыл бұрын
Так вы дальше смотрели? Я дико проорал, когда он опроверг реордеринг в первом примере, объясняя hb на 13 минуте.
@ololyona
@ololyona 5 жыл бұрын
@@kenshin45736 опечатался в примере наверное
@hopaandroid3427
@hopaandroid3427 8 жыл бұрын
Круто !
@VDlasov
@VDlasov 8 жыл бұрын
В примере Singleton нужно добавить ключевое слово "volatile" к переменной? "volatile static KeeperSingle instance;"
@asdfhajdkflhasdfjlhadfqer
@asdfhajdkflhasdfjlhadfqer 7 жыл бұрын
И зачем ? Мне сложно придумать аргумент за добавление volatile.
@VDlasov
@VDlasov 7 жыл бұрын
PreVet *При использовании многопоточности: я читал, что может не обновиться значение переменной. И слово volatile гарантирует порядок. Поэтому спросил.
@asdfhajdkflhasdfjlhadfqer
@asdfhajdkflhasdfjlhadfqer 7 жыл бұрын
Синглетон подразумевает, что ссылка на экземпляр класса будет создана при первом запросе на получение синглетона и в дальнейшем не будет модифицироваться. Если кто-то решит ее закешировать, то никакие изменения не должны пройти мимо, т.к. грубо говоря, адрес объекта-синглетона не изменится, закешированные данные останутся в актуальном состоянии. По поводу порядка сложно что-то сказать из-за отсутствия конкретного примера использования. В любом случае, запрет на оптимизацию перестановок коснется не только Ваших критических участков.
@arturdumchev3055
@arturdumchev3055 7 жыл бұрын
Да, нужно либо "volatile", либо "final" добавить, тут подробнее habrahabr.ru/post/129494/
@poroshok-ukhodi
@poroshok-ukhodi 6 жыл бұрын
Нам всё равно нужна синхронизация в методе getInstance() потому что иначе экземпляр может два раза создастся. Насколько я понимаю, если есть синхронизация, то в этом случае volatile уже не нужен, так как синхронизация обеспечивает happens before. Я могу ошибаться
@CyanideBtm
@CyanideBtm 6 жыл бұрын
закон мура о процессорах и количестве транзисторов, а не о скорости доступа к памяти. The Free Lunch Is Over - о том, что закон мура перестаёт работать и основной буст будет за счёт параллелизма. там нет ни слова о памяти и скорости доступа к ней. такое ощущение, что автор не достаточно хорошо ознакомился с предметной областью.
@haykmkrtchyan7093
@haykmkrtchyan7093 4 жыл бұрын
Так и не объяснили до конца Double check) Если кому-то интересно, в последном примере где закончился видео, это назывется Double check - вот видео о нем - kzfaq.info/get/bejne/a8uEhK6qsJPWd6c.html
@kornext
@kornext 4 жыл бұрын
Спасибо! Пригодилось.
@avpmk
@avpmk Жыл бұрын
17:00 Как-раз можно операции после volatile write печат печат пегмати переставить выше. Наоборот, да, нельзя.
@avpmk
@avpmk Жыл бұрын
А ну он дальше об этом сказал 20:56
@random_nick_for_comments
@random_nick_for_comments 7 жыл бұрын
какая-то глупость в примере с реордерингом и никто не задал на лекции вопрос. Ну и синглтон в конце лекции не пашет. Как было упомянуто раньше нужен волатайл. Но всё равно было интересно, спасибо
@sergeykurk
@sergeykurk 7 жыл бұрын
тоже не понял, сначала говорится, что реордеринг в одном потоке не возможен, если 1 переменная участвует, потом оказывается возможен
@user-hj1zu8mu8m
@user-hj1zu8mu8m 5 жыл бұрын
куча опечаток ошибок в подсчетах
@constantsvariables866
@constantsvariables866 4 жыл бұрын
Бред в лекции сам себе противоречит. Сначала говорит что все операции до и после volatile-записи не могу перемещаться вверх и вниз соответственно (рисуя на доске), потом говорит что у него A=43 (на слайдах) может улететь куда угодно . Спасибо что ломаете мозг, из-за вас любое желание учиться пропадает.Хорошо хоть по зеленым квадратикам на слайдах (которые не ваши и к изменению которых ваши руки не дотянулись) понятно что куда может улететь.
@ivanzhukov4767
@ivanzhukov4767 4 жыл бұрын
kzfaq.info/get/bejne/n6higZuS1t3YqJc.html Вот оригинал, где можно увидеть как должно быть. В итоге там должно было быть сказано не про reordering, а то, что в рамках гонки потоков, второй поток может увидеть новое значение 43 или старое 42
@user-sr9kt4tp8n
@user-sr9kt4tp8n Жыл бұрын
Скомкано, что-то пропустил и не стал объяснять, лекция не очень.
@user-bd1df4vw2s
@user-bd1df4vw2s Жыл бұрын
Ужасная противоречивая лекция в примере с реордерингом. Жирный минус.
@duckdeduct522
@duckdeduct522 9 ай бұрын
Вы чего, про какие то высшие материи с синглтоном и реордингом?! Тут каменный век..математики....аналитики 3:00 L2 медленнее L1 в 14 раз (7 / 0.5) - здесь слегка приуменьшил L3 медленнее L1 в 200 раз (100/ 0.5) - зато здесь до овер увеличил. Доверяйте свои денюжки таким счетоводам,. Тетка в задрыпанном сельпо магазе на счетах сознательно и то меньше вас обЪегорит, чем такие бессознательные, бескорыстные, но тупые.
The Java Memory Model - The Basics
23:41
Jakob Jenkov
Рет қаралды 121 М.
когда повзрослела // EVA mash
00:40
EVA mash
Рет қаралды 4,4 МЛН
KINDNESS ALWAYS COME BACK
00:59
dednahype
Рет қаралды 140 МЛН
Scary Teacher 3D Nick Troll Squid Game in Brush Teeth White or Black Challenge #shorts
00:47
The Java memory model explained, Rafael Winterhalter
48:01
Bulgarian Java User Group
Рет қаралды 16 М.
Java Memory Model in 10 minutes
10:55
Defog Tech
Рет қаралды 256 М.
Алексей Шипилёв - Близкие Контакты JMM-степени
57:49
Основы JMM
26:47
AndroidFans
Рет қаралды 874
Алексей Шипилёв - Прагматика Java Memory Model
1:55:22
JPoint, Joker и JUG ru
Рет қаралды 120 М.
когда повзрослела // EVA mash
00:40
EVA mash
Рет қаралды 4,4 МЛН