Многопоточность глазами разработчика

  Рет қаралды 25,139

Eugene Suleimanov

Eugene Suleimanov

Күн бұрын

Пікірлер: 217
@olzhastokanov
@olzhastokanov 8 ай бұрын
Это бриллиант из мира видео про программирование. Мало кому удается настолько подробно объяснить тяжелые темы доступным способом, без воды, и с максимальным количеством примеров, браво!
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Большое спасибо за отзыв!
@sample_camper
@sample_camper 9 ай бұрын
Последовательная, структурированная подача. На одном дыхании смотрится, спасибо!
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв!
@Overlap_ed
@Overlap_ed 8 ай бұрын
Это лучшее видео про многопоточность!!!!
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Большое спасибо за отзыв!
@Devivl
@Devivl 8 ай бұрын
Женя, большое спасибо за экспертизу! Очень приятно слушать тебя. Без воды, чётко и с примерами на экране. Такие знания продают, а ты делишься ими безвозмездно. Это просто не передать словами. Огромное человеческое спасибо.
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Большое спасибо за поддержку!
@dozory4
@dozory4 9 ай бұрын
Готовлюсь к собеседованиям, как раз изучаю тему многопоточности, и тут такое видео от Евгения. Коммент пишу до просмотра, потому что знаю, будет топ!
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за комментарий и удачи на собеседовании :)
@sergeyplatoshin2412
@sergeyplatoshin2412 9 ай бұрын
Лучшее объяснение что я видел, спасибо!
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв!
@IgorNovikov-c5o
@IgorNovikov-c5o 2 ай бұрын
Евгений это невероятно крутой формат. Понятно что подготовка к такому ролику потребовала большого количества времени. Спасибо вам огромное. Если сможете - запишите пожалуйста похожее видео по дженерикам.
@EugeneSuleimanov
@EugeneSuleimanov Ай бұрын
Большое спасибо за отзыв!
@МаринаКоткина-м5м
@МаринаКоткина-м5м 8 ай бұрын
Супер подача материала, и сам материал - все основы по многопоточности в одном видео 🔥 Спасибо большое!
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за отзыв!
@Rus_IT
@Rus_IT Ай бұрын
Не ожидал увидеть настолько классный материал. Теперь нужно посмотреть остальные ваши видеоролики. Спасибо большое! 🔥
@delalen8012
@delalen8012 5 ай бұрын
Спасибо за видео! Секции с самопроверкой полезные, лучше материал запоминается
@EugeneSuleimanov
@EugeneSuleimanov 5 ай бұрын
@@delalen8012 спасибо за отзыв и поддержку!
@AnatolShalobas
@AnatolShalobas 7 ай бұрын
Огромное спасибо за видео. Увидел небольшую недоработку хотел бы указать на нее. К сожалению на 29:59 некорректный пример для наглядного показа как работает синхронизация для двух разных счетчиков. Проблема которую я тут вижу в том, что вы в разных потоках, инкрементируете (пусть и потоконебезопасно) разные счетчики. Т.е. даже теоретически они не смогут повлиять друг на друга, а следовательно будут выводиться всегда верно. Даже если не будут синхронизированы.
@EugeneSuleimanov
@EugeneSuleimanov 7 ай бұрын
Большое спасибо за отзыв и замечание. Здесь больше упор был на введение в мьютексы, но я должным образом не акцентировал на этом внимание, поэтому этот пример вызывает недоумение. Еще раз спасибо!
@AnatolShalobas
@AnatolShalobas 7 ай бұрын
@@EugeneSuleimanov вам огромное спасибо за контент!
@Andre-h20
@Andre-h20 5 ай бұрын
Аналогично, пример вызвал непонимание, зашел, чтобы написать комент, но уже увидел. Евгений, спасибо за объяснение
@edmond-dantes-1796
@edmond-dantes-1796 8 ай бұрын
Комментарий в поддержку канала. Очень качественная и хорошо структурированная подача. Можно использовать как лекции для новичков)
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Большое спасибо за поддержку!
@ДмитрийПавленко-н5ч
@ДмитрийПавленко-н5ч 8 ай бұрын
Евгений, спасибо вам за ваш труд! Очень полезное видео👍
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за поддержку!
@zarazaEye
@zarazaEye 6 ай бұрын
Спасибо большое за видео. Есть небольшое предложение, основанное на книге "Эффективное обучение". Как правило, все вопросы самоконтроля относятся к пройденной части - это Ок. Но для системного усвоения, можно включать до секцию с парой-тройкой вопросов из предыдущих блоков. Например, вопросы по блоку С, а чуть ниже один вопрос из B, один вопрос из A. Также отлично заходит смешивание вопросов, мозг начинает заново переосмысливать в рамках большой темы взаимоотношения различных частей. Я использую данный подход для организации материалов для самообучения. А так в целом и книгу рекомендую, шикарная кмк.
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Спасибо за отзыв и предложение по улучшению.
@andarworld8985
@andarworld8985 8 ай бұрын
Большое спасибо за структурированную, грамотно поданную информацию!
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за отзыв!
@Celestial-y4n
@Celestial-y4n 4 ай бұрын
Дай бог тебе здоровья, добрый человек. Спасибо!
@EugeneSuleimanov
@EugeneSuleimanov 4 ай бұрын
@@Celestial-y4n спасибо за поддержку :)
@zhansayabaturbek1227
@zhansayabaturbek1227 6 ай бұрын
впервые встречаю очень хороший и понятный материал про многопоточность. А главное с примерами, спасибо вам огромное. Прекрасно объясняете.
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Спасибо за отзыв!
@bagbich
@bagbich 6 ай бұрын
Очень крутой канал. Объяснения подробные, но при этом лёгкие для понимания, без воды. 1,5 часа прошли мигом и всё хорошо усвоено. Спасибо, Евгений. Когда-то во многом благодаря вашим урокам с тестовыми собеседованиями стал разработчиком и спустя несколько лет продолжаю смотреть вас и подчёркивать для себя что-то новое.
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Большое спасибо за поддержку! Рад, что материал оказался полезен.
@alevadnaya
@alevadnaya 8 ай бұрын
Огромное спасибо за ваш труд, Евгений
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за поддержку!
@olegk6273
@olegk6273 8 ай бұрын
Евгений, спасибо! Освежил знания. Очень было интересно и не скучно
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за отзыв!
@daurenabdikadyr1763
@daurenabdikadyr1763 6 ай бұрын
Комментарий в поддержку канала. Очень качественная и хорошо структурированная подача. Очень информативно
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Спасибо за поддержку!
@leradmitrenko783
@leradmitrenko783 6 ай бұрын
спасибо большое за видео! это лучшая информация, что я видела про многопоточность, наконец-то я начинаю понимать эту тему))
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Большое спасибо за отзыв, рад, что материал оказался полезен.
@zagamusic5089
@zagamusic5089 Ай бұрын
Спасибо вам за контент!)
@alilaveaau
@alilaveaau 5 ай бұрын
Спасибо большое! Было бы интересно послушать от вас про стримы🙌🏻
@haykavetisyan5563
@haykavetisyan5563 8 ай бұрын
Объяснение виртуальных потоков потрясающее! Привет из Армении, дорогой Евгений.
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Большое спасибо за отзыв!
@АлександрБондарев-ъ7ф
@АлександрБондарев-ъ7ф 8 ай бұрын
Сеппер. Материал прям разжеван. Подача на высоте. Спасибо за труд.
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за поддержку!
@JGolt
@JGolt 5 ай бұрын
Спасибо за такой ценный и полезный материал! Все четко и по делу! P.s. после темной темы IDEA видеть белый экран слайда презентации - боль для глаз :D
@EugeneSuleimanov
@EugeneSuleimanov 5 ай бұрын
@@JGolt спасибо за отзыв! По экрану, не учел этот момент, спасибо за информацию :)
@davitkostandyan5103
@davitkostandyan5103 8 ай бұрын
Как всегда все максимально понятно, спаси большое за твой труд!
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Большое спасибо за отзыв!
@АнтонВеснин-э8ж
@АнтонВеснин-э8ж 8 ай бұрын
В поддержку канала! Спасибо за видео!
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за поддержку!
@twobeerornottwobeer5973
@twobeerornottwobeer5973 8 ай бұрын
Благодарю за видео, что-то новое подчерпнул для себя. Да и повторенье не помешает.
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за отзыв!
@alexandr7722
@alexandr7722 5 ай бұрын
Отличный материал, спасибо Евгений
@EugeneSuleimanov
@EugeneSuleimanov 5 ай бұрын
@@alexandr7722 спасибо за поддержку!
@elnar_1206
@elnar_1206 9 ай бұрын
Спасибо за видео про многопоточность! Очень понятно объяснили🔥🔥🔥
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв, Эльнар!
@YuriyBoiko-j8f
@YuriyBoiko-j8f 5 ай бұрын
Браво, лучшее объяснение!
@EugeneSuleimanov
@EugeneSuleimanov 5 ай бұрын
Спасибо за отзыв!
@vadmixname978
@vadmixname978 4 ай бұрын
Как раз изучаю сейчас потоки, спасибо автору!!!
@EugeneSuleimanov
@EugeneSuleimanov 4 ай бұрын
@@vadmixname978 спасибо за поддержку!
@Valerikvv80
@Valerikvv80 8 ай бұрын
Отличное видео. Буду периодически пересматривать
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за отзыв!
@ЮрийДымов-у6щ
@ЮрийДымов-у6щ 5 ай бұрын
Прекрасная последовательность подачи материала
@EugeneSuleimanov
@EugeneSuleimanov 5 ай бұрын
@@ЮрийДымов-у6щ спасибо за отзыв!
@sayrex-d7x
@sayrex-d7x 8 ай бұрын
Евгений, спасибо за видео и примеры)
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за поддержку!
@oldjohn1503
@oldjohn1503 3 ай бұрын
Ох, круто! Спасибо тебе, Женя, огромное!
@EugeneSuleimanov
@EugeneSuleimanov 3 ай бұрын
@@oldjohn1503 спасибо за отзыв!
@alexandr.goncharov
@alexandr.goncharov 6 ай бұрын
Очень простым язым про сложное. Спасибо!
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Спасибо за отзыв!
@Dominic_Herzog
@Dominic_Herzog 8 ай бұрын
Спасибо, стало более понятно, особенно, про executors и forkjoin, не разбирался с этим)
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за комментарий! Рад, что материал оказался полезен.
@pheelsav
@pheelsav 7 ай бұрын
Топовый материал + все структурированно!
@EugeneSuleimanov
@EugeneSuleimanov 7 ай бұрын
Большое спасибо за отзыв!
@pheelsav
@pheelsav Ай бұрын
@@EugeneSuleimanov Пересматриваю как ждый раз когда меняю работу/готовлюсь к собесам и каждый раз в восторге - это идеальный вариант что бы все освежить в памяти! Всех благ!
@phaselock-java
@phaselock-java 9 ай бұрын
Имба подъехала) Спасибо!
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за поддержку!
@dmitrelkin9256
@dmitrelkin9256 9 ай бұрын
Шедеврально. Фундаментальная систематизация темы многопоточности. Достойно быть оформлено как раздел учебника. Персональная благодарность за наглядное объяснение использования Conditions у ReentrantLocks.
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Большое спасибо за отзыв!
@MartinXProject
@MartinXProject 6 ай бұрын
Огромное спасибо за труд!
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Спасибо за поддержку!
@borlok2
@borlok2 9 ай бұрын
Спасибо, Женя! Огромная работа, ты молодец!)
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо, Юра :)
@qwe3271
@qwe3271 8 ай бұрын
Спасибо за труды!
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за поддержку!
@МишаФани
@МишаФани 9 ай бұрын
Контент как всегда на высоте! Спасибо.
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв!
@АннаСмирнова-о4л
@АннаСмирнова-о4л 8 ай бұрын
спасибо большое! прекрасно поданный материал
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Большое спасибо за отзыв!
@markolitovchenko5452
@markolitovchenko5452 7 ай бұрын
Спасибо Евгений 😊
@EugeneSuleimanov
@EugeneSuleimanov 7 ай бұрын
Спасибо за отзыв!
@e-researcher
@e-researcher 5 ай бұрын
Евгений, спасибо!
@EugeneSuleimanov
@EugeneSuleimanov 5 ай бұрын
Спасибо за комментарий!
@АлгизАбушаев
@АлгизАбушаев 5 ай бұрын
Низкий поклон!!!
@EugeneSuleimanov
@EugeneSuleimanov 5 ай бұрын
Спасибо за поддержку!
@dmitrysavkin5981
@dmitrysavkin5981 7 ай бұрын
Большое Спасибо. Очень нужная вещь
@EugeneSuleimanov
@EugeneSuleimanov 7 ай бұрын
Спасибо за поддержку!
@happysadman8558
@happysadman8558 5 ай бұрын
Спасибо большое за видео, Евгений! Много нового узнал, хоть уже с многопоточностью довольно давно знаком. Было очень интересно. Хотелось уточнить, что в примере с "first", "second", "third" можно было бы поочередно запускать, потом дожидаться выполнения каждого из потоков и в таком случае бы было поочередно выведены "first", "second" и "third". Я понимаю что в этом варианте не было бы никакого смысла от создания нескольких потоков, и все можно было бы последовательно выводить в одном, но думаю для полноты картины будет полезно знать, если вдруг кто-то задастся вопросом "а почему не сделать t1.start(); t1.join(); t2.start...?"
@ИгорьМешалкин-ж7ф
@ИгорьМешалкин-ж7ф 7 ай бұрын
21:10 а зачем в итоге знать приоритеты если они по факту не работают?
@Хочувсезнать-х4ю
@Хочувсезнать-х4ю 9 ай бұрын
Супер! Спасибо, Женя!
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Большое спасибо за отзыв!
@dozory4
@dozory4 8 ай бұрын
Если у кого-то зависает постоянно, как у меня, в примере на 38:38. Попробую объяснить (если не прав, поправьте) Если первый поток первый захватывает lock и выполняет firstMethodCalled.signal(), пока второй поток ждёт lock, то когда второй поток получит lock и встанет на ожидание firstMethodCalled.await(), то его некому будет разбудить. Вариант решения, как я понял, заключается в оборачивании firstMethodCalled.await() в конструкцию while, где условием будет флаг, который меняет первый поток. Это позволяет добиться: 1. Не вставать в ожидание, если метод first() выполнился первым 2. Избежать ложных пробуждений, если метод second() выполнится первым, и поток будет ожидать
@ratmirv
@ratmirv 8 ай бұрын
У меня такая же проблема, спасибо за решение) Не понимаю, как у автора ни разу не возникло такой ситуации.
@qwe3271
@qwe3271 7 ай бұрын
Тоже самое, рандомно паркуются либо Т2 и Т3, либо Т3
@qwe3271
@qwe3271 7 ай бұрын
public class Counter { private final ReentrantLock lock = new ReentrantLock(); private final Condition firstMethodCalled = lock.newCondition(); private final Condition secondMethodCalled = lock.newCondition(); private final AtomicInteger count1 = new AtomicInteger(0); private final AtomicInteger count2 = new AtomicInteger(0); public void first() { lock.lock(); try { System.out.println("first"); firstMethodCalled.signal(); count1.incrementAndGet(); } finally { lock.unlock(); } } public void second() { lock.lock(); try { while (count1.get() == 0) { firstMethodCalled.await(); } System.out.println("second"); secondMethodCalled.signal(); count2.incrementAndGet(); } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); } } public void third() { lock.lock(); try { while (count2.get() == 0) { secondMethodCalled.await(); } System.out.println("third"); } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); } } }
@limitless6216
@limitless6216 4 ай бұрын
Евгений, низкий поклон, лайк, подписка, колокольчик
@EugeneSuleimanov
@EugeneSuleimanov 4 ай бұрын
@@limitless6216 спасибо за поддержку!
@dozory4
@dozory4 8 ай бұрын
Не могу понять, почему возможна ситуация, когда два раза будет напечатан PING (46:39). Если я правильно понял, то поток блокируется до момента, пока не будет выполнен обмен (когда другой поток инициирует обмен). Как поток может два раза выполнить: exchange() + print(), если другой поток должен как минимум один раз сделать exchange() + print(), что исключает возможность вывода в консоль дважды например, PING?
@ilyasimonovets4639
@ilyasimonovets4639 8 ай бұрын
Большое спасибо за видео 🤝
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за поддержку!
@VolodyaFedotOFF
@VolodyaFedotOFF Ай бұрын
Механизм CaS это по сути своей версионирование. Ничего не блокируем, пусть сколько угодно потоков заходят, просто каждый работает со своей версией. А потом прежде чем записать итоговое значение сравниваем версии. Но только как бы под версиями используется начальное значение переменной. В общем это механизм оптимистической блокировки😁 Но вы Евгений молодец, хорошо доносите суть.
@EugeneSuleimanov
@EugeneSuleimanov Ай бұрын
@@VolodyaFedotOFF по сути, да. Спасибо за отзыв!
@ercefwxdx
@ercefwxdx 9 ай бұрын
Дякую! Супер!
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за поддержку!
@mobilafilm
@mobilafilm 3 ай бұрын
спасибо👍
@knockjkeee
@knockjkeee 9 ай бұрын
как всегда -> безупречно!👍
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за комментарий!
@kazbowski
@kazbowski 9 ай бұрын
Это самое годное, что я видел за последнее время (честно) Можно предлагать темы для видео ?)
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв! Предлагать можно, но уже есть свой план на ближайшие 6 месяцев.
@kazbowski
@kazbowski 9 ай бұрын
@@EugeneSuleimanov хотел предложить довольно интересную тему - реализация OTP (one time password / двухфакторка) на спринге. По ней довольно мало материала в интернете, и то, что есть - сделано очень коряво и не секьюрно. Я видел ваши видео, видел вашу архитектуру, и мне кажется, у вас бы получилось реализовать хороший прототип :)
@marksalvatore9257
@marksalvatore9257 9 ай бұрын
Как раз готовлюсь к собесу. Спасибо большое
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв и удачи на собеседовании.
@javaspace9999
@javaspace9999 9 ай бұрын
Как всегда, лучший 😊
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв :)
@chydomonahsilver7855
@chydomonahsilver7855 8 ай бұрын
Лучший блогер по джава!
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за поддержку!
@themistocies50
@themistocies50 8 ай бұрын
34:10 а можно ли назвать эти лок-объекты не мониторами, а именно мьютексами? Насколько я понимаю, реализация монитора происходит с помощью блока synchronized, а в параметры этого блока мы передаем мьютекс, т.е. значение (объект/класс), на котором синхронизируемся?
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за вопрос. Да, можно назвать и так, но в Java чаще всего используется термин монитор.
@alexey9139
@alexey9139 8 ай бұрын
Евгений, спасибо за лекцию - лучшее, что я видел по многопоточке освещающее практически все аспекты. Два вопроса: 1. В ConcurrentHashMap почему блокировка идет не по бакету а по "сегметам из 4х бакетов" - какое логическое объяснение? 2. В чем смыл SingleThreadPoolExecutor если есть Fixed? доставить из пула "один из одного" не пересоздавая?
@themistocies50
@themistocies50 8 ай бұрын
если бы блокировка была на уровне одного бакета, потребовалось бы больше блокировок и, соответственно, выше были бы накладные расходы на управление ими. Так как блокировка происходит на уровне сегментов, несколько потоков могут одновременно обрабатывать различные сегменты карты, что увеличивает производительность многопоточных операций.
@alexandr6055
@alexandr6055 8 ай бұрын
Очень хорошие вопросы, надеюсь Евгений ответит
@МаратМирзабалаев
@МаратМирзабалаев Ай бұрын
Спасибо, разобрался с многопоточностью. Почему не было рассказано ничего про методы wait, notify и notifyAll?
@EugeneSuleimanov
@EugeneSuleimanov Ай бұрын
@@МаратМирзабалаев спасибо за отзыв. wait, notify, notifyAll крайне базовые, только по этой причине.
@caffeinejavacode1475
@caffeinejavacode1475 7 ай бұрын
Полезно!
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Спасибо за поддержку!
@bigbugsking1173
@bigbugsking1173 Ай бұрын
Как сделать приложение постоянно работающее, обрабатывающее входящие исходящие запросы, (которое закрывается по кнопке), но при этом чтобы оно не жрало процессор на 100% ???
@themistocies50
@themistocies50 8 ай бұрын
Привет! На 30:21 ведь нет необходимости использовать synchronized на методах? Т.к. каждый поток работает со своей переменной, аномалий никаких не происходит.
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за вопрос! Да, все верно, здесь просто подводка к внутренним монитором.
@SIGORYS
@SIGORYS 7 ай бұрын
здравствуй, на 34.57 нашел противоречие насчет освобождения мониторов. В Java внутренние мониторы (или мониторы объектов) не могут быть освобождены "любым" потоком. Мониторы объектов обычно захватываются и освобождаются тем же потоком, который вошел в блок synchronized для данного объекта.
@СарангБех
@СарангБех 14 күн бұрын
странный момент: у меня именно IncrementCounterSynchronizedBlockDemo отрабатывает 50-70s а вот казалось бы более параллельный IncrementTwoCountersSynchronizedOnObjectDemo отрабатывает за 90-110s почему так?
@ioanntrapeznikov
@ioanntrapeznikov 9 ай бұрын
Как всегда уровень
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв!
@fara0n333
@fara0n333 9 ай бұрын
Лайк сразу !)
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за поддержку!
@user-lk8n0fgjk
@user-lk8n0fgjk 9 ай бұрын
Поправьте, если не прав, но мне кажется что на 12:03 упоминается пример про SimpleCounterDemo, которого нет в данном видео выше
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Да, вы правы, спасиб за уточнение, вероятнее всего выпало при монтаже. github.com/proselytear/javaconcurrency/blob/main/src/main/java/net/proselyte/concurrency/threadsintro/SimpleCounterDemo.java Здесь ссылка на этот пример.
@ktotam8913
@ktotam8913 9 ай бұрын
Спасибо ❤
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за поддержку!
@nouchance
@nouchance 9 ай бұрын
Спасибо Евгений! Хочу спросить у вас, точно так как у .NET’e работает потоки как у Java ? Потому что я .NET разработчик.Заранее спасибо!
@HaarDD
@HaarDD 6 ай бұрын
Отличный материал, огромное спасибо за труды! Евгений, подскажите, есть ли в планах лекции по Spring? 😇
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Спасибо за отзыв! По Spring - есть в планах, но по срокам на данный момент не могу точно подсказать из-за высокой рабочей нагрузки.
@user-lk8n0fgjk
@user-lk8n0fgjk 9 ай бұрын
Евгений, огромное спасибо за видео. С помощью Ваших роликов я разобрался во многих аспектах Java. Если возможно, подскажите, пожалуйста, зачем в классе IncrementTwoCountersSynchronizedDemo делать synchronized два метода по инкременту счетчиков? Если каждый поток юзает только свой метод и свой счетчик, и у потоков нет общих ресурсов. Я с десяток раз запускал код без синхронайзд и всегда ответ был один и тот же. Спасибо за ответ!
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв и ваш вопрос. Здесь была демонстрация того, что мы можем использовать несколько таких блоков внутри класса и подводка к блокировке через объект.
@user-lk8n0fgjk
@user-lk8n0fgjk 9 ай бұрын
@@EugeneSuleimanov Понял, спасибо!
@SplashDmg2011
@SplashDmg2011 8 ай бұрын
Вот да, хотел написать такой же коммент, но сначала решил поискать среди имеющихся :) согласен, что пример странный, т.к. синхронизация там вообще ничего не дает.
@qaserus1226
@qaserus1226 9 ай бұрын
спасибо огромное)
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв :)
@СергейПанов-з3ц
@СергейПанов-з3ц 8 ай бұрын
Евгений, спасибо за очень крутое видео. Все очень подробно и доступно показано. На 35:38 вы упомянули слово "семантика", это очень сложное слово, не понятно что оно означает. Могли бы вы дать объяснение что оно значит в данном контексте?
@ratmirv
@ratmirv 8 ай бұрын
Я так понял, что возможно под "семантикой" в данном случае имеется в виду функционал или способ работы/применения.
@СергейПанов-з3ц
@СергейПанов-з3ц 8 ай бұрын
@@ratmirv в данном контексте "семантика" означает набор гарантий, которые будут выполнены в ходе исполнения программы. Я знал ответ на этот вопрос, прежде чем спрашивать. Просто хотел услышать ответ Евгения. Возможно он будет отличаться от моего определения.
@МаксимНаумов-ъ2у
@МаксимНаумов-ъ2у 8 ай бұрын
Евгений, а где ваши выступления на конференциях посмотреть можно?)
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за комментарий! По видео не уверен, что созвонились, не самые мейнстримные площадки были.
@neyasbit
@neyasbit 3 күн бұрын
Что за золото? ❤‍🔥
@chciwosc
@chciwosc 5 ай бұрын
Отличный sumamrize многопоточки. Не думал снять про Котлин Коротины? Единственное Немного информация про ConcurrentHashMap устарела. Такой подход использовался до Джава 8 с блокировкой сегментов. Сейчас же блокируется только 1 бакет, а не 25%. И то, как я понял, он не сразу блокируется а изначально будет использовать CAS (Optimistic locking)
@EugeneSuleimanov
@EugeneSuleimanov 5 ай бұрын
@@chciwosc спасибо за отзыв и уточнение по ConcurrentHashMap. По котлин на текущий момент не было в планах, но идея хорошая.
@bodythanks
@bodythanks 9 ай бұрын
А почему не рассказывает про happens-before?
@maksimus.ssirotkin1124
@maksimus.ssirotkin1124 8 ай бұрын
Добрый день и еще такой вопрос, виртуальный поток это абстракция над чем? Я так же смотрел материал где говорится, что инструменты типа corutine and gorutine , это frameworks на уровне языка, позволяющий писать асинхронный код как последовательный
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за вопрос! Это абстракция над обычными потоками операционной системы. Относительно coroutine и goroutine - это механизмы, предоставляемые различными языками программирования (например, Kotlin для coroutine, Go для goroutine), которые обеспечивают лёгкие "зелёные" потоки выполнения. Они позволяют писать асинхронный код так, как будто он выполняется последовательно, что облегчает асинхронное программирование и уменьшает накладные расходы на создание потоков.
@maksimus.ssirotkin1124
@maksimus.ssirotkin1124 8 ай бұрын
@@EugeneSuleimanov тогда, по -сути поток Операционной системы, это время Одного из процессоров, которое выделено , на выполнение задачи., в рамках процесса программы. Но будет ли оно выполнено последовательно или попеременно, Или параллельно, т.е другим процессором или ядром, от нас не зависит, управлять этим нельзя, можно лишь направлять. Я правильно понимаю?
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
@@maksimus.ssirotkin1124 по определению потока - не совсем согласен. Но по части контроля - верно, в Java мы не можем это контролировать.
@НикитаЗемницкий-ы3ж
@НикитаЗемницкий-ы3ж 5 ай бұрын
Пример с Callable и Future не совсем корректный, из-за того, что executor Service создается в try с ресурсами и будет закрыт после выхода из try, мы вынуждены ждать, пока все потоки не закончат работу. На видео это не заметно, так все выполняется большим количеством потоков, но если поставить выполнять это все 2-3 потока, то к брейкпоинту на строчке 22 программа будет идти очень долго
@EugeneSuleimanov
@EugeneSuleimanov 5 ай бұрын
@@НикитаЗемницкий-ы3ж большое спасибо за корректное замечание.
@maksimus.ssirotkin1124
@maksimus.ssirotkin1124 8 ай бұрын
Здравствуйте, такой вопрос, за счет чего достигается ускорение,если потоков больше чем ядер, и другой вопрос, можно ли средствами Java, передать выполнение задачи или пула задач, конкретному процессору или процессору, но чтобы он не отвлекался, на выполнение других задач?
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за вопросы! По первому вопросу: В случае многопоточных вычислений, где задачи могут быть разделены на независимые подзадачи, параллельное выполнение на нескольких потоках может значительно ускорить общее время выполнения. По второму вопросу: В Java нет прямого способа явно указать процессор, на котором должна выполняться задача. Надеюсь, я верно понял вопросы и смог дать на них ответ.
@konstantenivanov6235
@konstantenivanov6235 8 ай бұрын
добрый день. Не понял на 34.19 Как может быть что внутренний монитор может быть освобожден любым потоком? ведь если Т1 захватит монитор текущего объекта, то Т2 поток будет ждать пока монитор не освободится.
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Добрый день, спасибо за вопрос. Как пример - метод notifyAll() у класса Object.
@lebaur
@lebaur 6 ай бұрын
@@EugeneSuleimanov Внутренний монитор (intriNsic lock) не может быть освобожден любым потоком. Чтобы notifyAll() отработал, он должен захватить внутренний монитор объекта, но он не освобождает его, если он захвачен кем-то. Это wait() после успешного выполнения отпускает монитор, чтобы его notifyAll() мог захватить потом.
@qrthack
@qrthack 9 ай бұрын
101 мой друг, хочу в backend, выбираю между PHP, Golang, Node.js, Java, что посоветуешь, чтобы легче было устроиться на работу с перспективой? Или с какого языка посоветуешь начать?
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за комментарий! Я предвзят и советовал бы Java :)
@friedbearsburninhell2022
@friedbearsburninhell2022 9 ай бұрын
Контентище!
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за комментарий!
@ВладМилаш-э1с
@ВладМилаш-э1с 6 ай бұрын
Лекция топ
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Спасибо за комментарий!
@twobeerornottwobeer5973
@twobeerornottwobeer5973 8 ай бұрын
Кажется про volatile вопрос есть, а что это нету
@VladBodrov
@VladBodrov 6 ай бұрын
Это видео достойно доната) Может быть заведешь бусти?)
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Большое спасибо за поддержку! Донаты на данный момент не планируются.
@codingpas
@codingpas 3 ай бұрын
Как вы успеваете пилить такие классные ролики и работать?
@EugeneSuleimanov
@EugeneSuleimanov 3 ай бұрын
@@codingpas спасибо за комментарий. Немного меньше сплю :)
@kozhuhovIvan
@kozhuhovIvan 9 ай бұрын
Разве открытые потоки не нужно закрывать?
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за вопрос. Не могли бы вы немного уточнить вопрос?
@kozhuhovIvan
@kozhuhovIvan 9 ай бұрын
@@EugeneSuleimanov каждый поток надо закрывать, разве нет?
@alexandr6055
@alexandr6055 8 ай бұрын
​@@kozhuhovIvanон же говорил. В 21 джаве Executors стали импл. Closeable. А если ты про обычные потоки, то нахрена их закрывать, и как ты их закроешь. Метод .stop() давно deprecated
@SplashDmg2011
@SplashDmg2011 8 ай бұрын
@kozhuhovIvan Вы, наверное, путаете с ресурсами, которые действительно надо закрывать (например, объект, который работает с файловой системой или сетью). Потоки закрывать не нужно, они завершаются сами, когда завершают выполнение своей работы.
@viewer_evgeniy
@viewer_evgeniy 5 ай бұрын
Здравствуйте, Евгений. Спасибо за ваши уроки! Наглядно Starvation можно легко показать с помощью класса, который будет использовать пару локов. В методе класса эти локи будут использованы по порядку. В мейне же создаем три потока, и три лока, первому потоку даем лок1 и лок2, второму лок2 и лок3, третьему потоку - лок 1 и лок3. Таким образом, только поток2 будет первым иметь возможность забрать лок2, и поэтому у него будет определенный приоритет в доступе к ресурсу (например к счетчику). Это приведет к тому, что поток2 будет работать эффективнее, когда оставшиеся два потока будут сильно отставать. Результат счетчика (считаем до 500тыс) может быть следующим: T2 counted 374166 T1 counted 70861 T3 counted 54973
@EugeneSuleimanov
@EugeneSuleimanov 5 ай бұрын
@@viewer_evgeniy большое спасибо за поддержку и хороший пример!
Основы системного дизайна за 30 минут
28:46
Eugene Suleimanov
Рет қаралды 33 М.
Оптимизация SQL запроса
17:13
Eugene Suleimanov
Рет қаралды 22 М.
小丑女COCO的审判。#天使 #小丑 #超人不会飞
00:53
超人不会飞
Рет қаралды 16 МЛН
Мясо вегана? 🧐 @Whatthefshow
01:01
История одного вокалиста
Рет қаралды 7 МЛН
Каха и дочка
00:28
К-Media
Рет қаралды 3,4 МЛН
Sigma Kid Mistake #funny #sigma
00:17
CRAZY GREAPA
Рет қаралды 30 МЛН
Евгений Борисов - Spring Patterns
56:38
TechTrain
Рет қаралды 137 М.
Тестирование ПО глазами разработчика
3:48:07
Ключевые структуры данных
50:39
Eugene Suleimanov
Рет қаралды 7 М.
Docker и Kubernetes глазами разработчика
2:46:22
Eugene Suleimanov
Рет қаралды 12 М.
Будущее программирования
28:16
Eugene Suleimanov
Рет қаралды 9 М.
Лекция 11. Многопоточность в Java
1:42:36
Computer Science Center
Рет қаралды 40 М.
小丑女COCO的审判。#天使 #小丑 #超人不会飞
00:53
超人不会飞
Рет қаралды 16 МЛН