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

  Рет қаралды 41,475

Computer Science Center

Computer Science Center

Күн бұрын

Пікірлер: 32
@Николай-х3б4ф
@Николай-х3б4ф Жыл бұрын
Спасибо вам, Тагир. Понравилось, что сперва обсуждаем проблемы , и постепенно решая их приходим к современному подходу)
@Николай-х3б4ф
@Николай-х3б4ф Жыл бұрын
Еще понравилось, что лекция дает понимание процессов происходящих в железе. Для меня, например, было открытием, что процессор принимает кеш линию целиком
@slavasemushin
@slavasemushin Жыл бұрын
Очень классно! Спасибо!
@mikhaildubovskiy8873
@mikhaildubovskiy8873 Жыл бұрын
good video и для сениора норм ))
@lisafox9026
@lisafox9026 11 ай бұрын
можно ссылку на исходники?
@eugenesmith9940
@eugenesmith9940 6 ай бұрын
Интересно, а как мы можем вычитать во 2-м потоке то, что INSTANCE не null?
@John_Smith_Java
@John_Smith_Java 2 жыл бұрын
29:43 Подскажите, пожалуйста, как получить доступ к приватному статическому полу list класса Container?
@lordgarrish
@lordgarrish 2 жыл бұрын
Никак, на то он и приватный.
@NIKITry
@NIKITry 2 жыл бұрын
можно достать через рефлекшн, но это такой себе вариант, т.к. можно поломать всю программу
@John_Smith_Java
@John_Smith_Java 2 жыл бұрын
Ну просто не компилируется🤷‍♂️
@АндрейКолосовский-я4р
@АндрейКолосовский-я4р 2 жыл бұрын
@@John_Smith_Java геттер в классе Container создать нужно. тут это упустили для простоты восприятия.
@СырокКексик
@СырокКексик Жыл бұрын
@@АндрейКолосовский-я4р скорее всего скрин из класса Container метода main. И обращение было к приватному полю объекта внутри самого класса объекта.
@вапвапвапвапва-ж1и
@вапвапвапвапва-ж1и 7 ай бұрын
Видео огонь
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 жыл бұрын
Спасибо
@user-zx5sv3hb2u
@user-zx5sv3hb2u 2 жыл бұрын
А есть возможно качество видео улучшить до 1080?
@9080artur
@9080artur 11 ай бұрын
натренируй нейросеть и залей туда видео)
@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: для уточнения понимания - в моем ответе стоит заменить "инструкции" на "операции"
@arturbarkou6347
@arturbarkou6347 Ай бұрын
Динамика на графиках о процессорах не соответствует тексту лектора 🤔
@ptreeful
@ptreeful 2 жыл бұрын
Вопрос: а есть ли книга, где можно про все это почитать?
@dioflok26
@dioflok26 Жыл бұрын
"Java Concurrency in Practice" Брайан Гетц
@-maxxxeffect
@-maxxxeffect Жыл бұрын
@@dioflok26 далеко не все описано в этой книге. все же последнее издание от 2004 или 2006 года
@EugeneEvdokimov
@EugeneEvdokimov 11 ай бұрын
​@@-maxxxeffectИз этой лекции там есть все
@kissloryshy
@kissloryshy 9 ай бұрын
Семь моделей конкуренции за семь недель
@ЛеонидПескин-з7ы
@ЛеонидПескин-з7ы Жыл бұрын
компьютьэры прям режет слух
@EugeneEvdokimov
@EugeneEvdokimov 11 ай бұрын
а меня скрутило от "доступиться" )
Многопоточность в Java: основы
1:23:05
Computer Science Center
Рет қаралды 113 М.
coco在求救? #小丑 #天使 #shorts
00:29
好人小丑
Рет қаралды 120 МЛН
Сестра обхитрила!
00:17
Victoria Portfolio
Рет қаралды 958 М.
Многопоточность глазами разработчика
1:36:04
Лекция 10. Многопоточность
1:37:11
Computer Science Center
Рет қаралды 30 М.
Лекция 13. Конкурентные коллекции. Аннотации
1:36:05
Олег Шелаев - Обзор возможностей многопоточности в Java
2:13:44
JPoint, Joker и JUG ru — Java-конференции
Рет қаралды 30 М.
Лекция 14. Что внутри Java?
1:37:51
Computer Science Center
Рет қаралды 20 М.
Тагир Валеев - Stream API: рекомендации лучших собаководов
55:29
JPoint, Joker и JUG ru — Java-конференции
Рет қаралды 43 М.