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

  Рет қаралды 33,047

Computer Science Center

Computer Science Center

2 жыл бұрын

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

Пікірлер: 29
@user-xq4wc1ge7r
@user-xq4wc1ge7r 5 ай бұрын
Спасибо вам, Тагир. Понравилось, что сперва обсуждаем проблемы , и постепенно решая их приходим к современному подходу)
@user-xq4wc1ge7r
@user-xq4wc1ge7r 5 ай бұрын
Еще понравилось, что лекция дает понимание процессов происходящих в железе. Для меня, например, было открытием, что процессор принимает кеш линию целиком
@slavasemushin
@slavasemushin 9 ай бұрын
Очень классно! Спасибо!
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 жыл бұрын
Спасибо
@mikhaildubovskiy8873
@mikhaildubovskiy8873 Жыл бұрын
good video и для сениора норм ))
@lisafox9026
@lisafox9026 3 ай бұрын
можно ссылку на исходники?
@user-zx5sv2hb3u
@user-zx5sv2hb3u 2 жыл бұрын
А есть возможно качество видео улучшить до 1080?
@9080artur
@9080artur 4 ай бұрын
натренируй нейросеть и залей туда видео)
@John_Smith_Java
@John_Smith_Java Жыл бұрын
29:43 Подскажите, пожалуйста, как получить доступ к приватному статическому полу list класса Container?
@lordgarrish
@lordgarrish Жыл бұрын
Никак, на то он и приватный.
@NIKITry
@NIKITry Жыл бұрын
можно достать через рефлекшн, но это такой себе вариант, т.к. можно поломать всю программу
@John_Smith_Java
@John_Smith_Java Жыл бұрын
Ну просто не компилируется🤷‍♂️
@user-ih3eu8ft4i
@user-ih3eu8ft4i Жыл бұрын
@@John_Smith_Java геттер в классе Container создать нужно. тут это упустили для простоты восприятия.
@user-cb7ug8jf2k
@user-cb7ug8jf2k 6 ай бұрын
@@user-ih3eu8ft4i скорее всего скрин из класса 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 10 ай бұрын
@@dioflok26 далеко не все описано в этой книге. все же последнее издание от 2004 или 2006 года
@EugeneEvdokimov
@EugeneEvdokimov 4 ай бұрын
​@@-maxxxeffectИз этой лекции там есть все
@kissloryshy
@kissloryshy 2 ай бұрын
Семь моделей конкуренции за семь недель
@user-gi2hx8zf1i
@user-gi2hx8zf1i 4 ай бұрын
компьютьэры прям режет слух
@EugeneEvdokimov
@EugeneEvdokimov 4 ай бұрын
а меня скрутило от "доступиться" )
1 класс vs 11 класс  (игрушка)
00:30
БЕРТ
Рет қаралды 2,3 МЛН
Is it Cake or Fake ? 🍰
00:53
A4
Рет қаралды 14 МЛН
He tried to save his parking spot, instant karma
00:28
Zach King
Рет қаралды 21 МЛН
Чего ждать от битка? Прогноз курса биткоина на 10 июня 2024. Разбор bitcoin
4:34
Парето инвестиции и трейдинг | SVG | Гольчиков
Рет қаралды 47
Многопоточность в Java: основы
1:23:05
Computer Science Center
Рет қаралды 110 М.
1. Введение (Программирование на Rust)
1:41:43
Computer Science Center
Рет қаралды 202 М.
Многопоточность глазами разработчика
1:36:04
Алгоритмы на Python 3. Лекция №1
1:20:50
Тимофей Хирьянов
Рет қаралды 5 МЛН