Тёмный

Лекция 11. Многопоточность в Java 

Computer Science Center
Подписаться 162 тыс.
Просмотров 37 тыс.
50% 1

Знакомство с языком с самых азов, но глубоко. Преподаватель - Тагир Валеев. Подробнее о курсе: compscicenter....
Все лекции курса по порядку: • Программирование на Ja...
Подписывайтесь на наш канал: / compscicenter
Подробнее о поступлении в CS центр: compscicenter....
Следите за новостями и анонсами:
compsci...
t.me/compscice...
Поддержать CS центр:
compscicenter....

Опубликовано:

 

10 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 31   
@user-xq4wc1ge7r
@user-xq4wc1ge7r 8 месяцев назад
Спасибо вам, Тагир. Понравилось, что сперва обсуждаем проблемы , и постепенно решая их приходим к современному подходу)
@user-xq4wc1ge7r
@user-xq4wc1ge7r 8 месяцев назад
Еще понравилось, что лекция дает понимание процессов происходящих в железе. Для меня, например, было открытием, что процессор принимает кеш линию целиком
@slavasemushin
@slavasemushin Год назад
Очень классно! Спасибо!
@user-gk3ep5mq9r
@user-gk3ep5mq9r 2 месяца назад
Видео огонь
@mikhaildubovskiy8873
@mikhaildubovskiy8873 Год назад
good video и для сениора норм ))
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 года назад
Спасибо
@eugenesmith9940
@eugenesmith9940 Месяц назад
Интересно, а как мы можем вычитать во 2-м потоке то, что INSTANCE не null?
@lisafox9026
@lisafox9026 7 месяцев назад
можно ссылку на исходники?
@user-zx5sv3hb2u
@user-zx5sv3hb2u 2 года назад
А есть возможно качество видео улучшить до 1080?
@9080artur
@9080artur 7 месяцев назад
натренируй нейросеть и залей туда видео)
@John_Smith_Java
@John_Smith_Java Год назад
29:43 Подскажите, пожалуйста, как получить доступ к приватному статическому полу list класса Container?
@lordgarrish
@lordgarrish Год назад
Никак, на то он и приватный.
@NIKITry
@NIKITry Год назад
можно достать через рефлекшн, но это такой себе вариант, т.к. можно поломать всю программу
@John_Smith_Java
@John_Smith_Java Год назад
Ну просто не компилируется🤷‍♂️
@АндрейКолосовский-я4р
@@John_Smith_Java геттер в классе Container создать нужно. тут это упустили для простоты восприятия.
@СырокКексик
@СырокКексик 9 месяцев назад
@@АндрейКолосовский-я4р скорее всего скрин из класса Container метода main. И обращение было к приватному полю объекта внутри самого класса объекта.
@kotbajan
@kotbajan 2 года назад
Вопрос не про потоки, а про оптимизацию и перестановки: private boolean initialized = false; // not volatile private Object obj = null; // not volatile public void doIt { if (!this.initialized) { this.obj = init(); // (1) throw RuntimeException this.initialized = true; // (2) } } код однопоточный. Может ли произойти оптимизация и шаг 2 произойдет раньше шага 1?
@aanoonymouss
@aanoonymouss 2 года назад
Зависит от того - связаны обьект и переменная друг с другом. Т.е. если внутри инициализации обьекта есть код, который использует переменную - значит связаны. Если нет - значит не связаны. Эту связь будет определять компилятор при сборке кода. Если связь есть - компилятор будет гарантировать заданную в коде последовательность выполнения. Если связи нет - то действительно да, переменная может стать true раньше, чем инициализация обьекта. Но в контексте однопоточной программы - для программиста это не имеет значения, код будет выполняться корректно и так и так. В контексте многопоточки - свои ньюансы конечно. Это в C++ так. В яве - скорее всего то же самое. Поправьте, если ошибаюсь. Забавно, примерная аналогия ситуации в вопросе - "эффект наблюдателя" в квантовой физике :)
@kotbajan
@kotbajan 2 года назад
@@aanoonymouss , почему корректно в однопоточке? Булево поле установлено, но инициализация по факту не прошла (исключнние). При следующей попытке не произойдет, т.к. проверяется установленное булево поле, а не сам объект.
@aanoonymouss
@aanoonymouss 2 года назад
@@kotbajan По условию - код однопоточный. О каких "при следующей попытке не произойдет" идет речь? Правда, несколько раз перечитал сообщение - нихера не понял, о чем ты... Перефразируй и поясни плиз
@kotbajan
@kotbajan 2 года назад
@@aanoonymouss , например, шедулер на 1 потоке. Либо вызов одного и того же метода несколько раз в рамках одного алгоритма. Создаем объект, дергаем doIt(), получаем exception (1) и расчитываем, что флаг инициализации (2) не был взведен. Ждем какое-то время и делаем еще одну попытку. Смены потока нет - код однопоточный. Но если оптимизатор поменял местами строки, в this.obj навсегда останется значение по умолчанию.
@aanoonymouss
@aanoonymouss 2 года назад
@@kotbajan Ок, теперь понял. Интересный вопрос! Подтвердить свои слова не могу - но нутром чую, что исключение не даст выполниться изменению переменной. Почему чую - потому что иначе весь наш говнокод перестел бы работать, и самолеты начали бы падать. Но самолеты летают, и код работает так, как мы ожидаем. Я плюсовик, но - присоединюсь к вопросу. Эй народ - может ли произойти реордеринг между вызовом функции и изменением переменной? Как по мне - нет. Потому что реордеринг может быть только между инструкциями, а вызов функции - это новая пачка инструкций? edit: для уточнения понимания - в моем ответе стоит заменить "инструкции" на "операции"
@ptreeful
@ptreeful Год назад
Вопрос: а есть ли книга, где можно про все это почитать?
@dioflok26
@dioflok26 Год назад
"Java Concurrency in Practice" Брайан Гетц
@-maxxxeffect
@-maxxxeffect Год назад
@@dioflok26 далеко не все описано в этой книге. все же последнее издание от 2004 или 2006 года
@EugeneEvdokimov
@EugeneEvdokimov 7 месяцев назад
​@@-maxxxeffectИз этой лекции там есть все
@kissloryshy
@kissloryshy 5 месяцев назад
Семь моделей конкуренции за семь недель
@user-gi2hx8zf1i
@user-gi2hx8zf1i 7 месяцев назад
компьютьэры прям режет слух
@EugeneEvdokimov
@EugeneEvdokimov 7 месяцев назад
а меня скрутило от "доступиться" )
Далее
Многопоточность в Java: основы
1:23:05
ДОКАЗАЛ ЧТО НЕ КАБЛУК #shorts
00:30
Новый уровень твоей сосиски
00:33
Java #10. Concurrency
1:02:41
Просмотров 11 тыс.
Java middle+ mock interview
58:52
Просмотров 2,7 тыс.
Евгений Борисов - Spring Patterns
56:38
Просмотров 132 тыс.
Алгоритмы на Python 3. Лекция №1
1:20:50