Java. Многопоточность. Как устроить Deadlock.

Поділитися
Вставка
  • Опубліковано 14 лис 2024

КОМЕНТАРІ •

  • @НикитаКорнюхин-я6щ
    @НикитаКорнюхин-я6щ 6 місяців тому +2

    Приятно смотреть, когда простыми словами объясняют такую тему, как многопоточность! Спасибо!

  • @evagor730
    @evagor730 Рік тому +4

    Прекрасное объяснение и примеры! Я бы добавила хоть пару слов о том, зачем вообще нужны вложенные мьютексы (когда обойтись единственным блоком синхронизации будет плохим решением). Это не сложно, но для тех, кто только начал разбираться в многопоточности, будет дополнительным подспорьем. А вообще отличное видео!

  • @НикитаСологуб-щ3ц
    @НикитаСологуб-щ3ц 8 місяців тому

    Круто! Спасибо большое за объяснения!

  • @Svyat911
    @Svyat911 2 роки тому +1

    Спасибо,!!! Как раз на курсах такая домашняя задача, все кумекал....

    • @alexandr6055
      @alexandr6055 Рік тому +1

      Как успехи, прошел год. Работаете уже?

    • @Svyat911
      @Svyat911 Рік тому +1

      @@alexandr6055 вітаю, ні захищаю Україну в збройних силах

  • @MrMor94ok
    @MrMor94ok 2 роки тому +1

    Спасибо,сейчас как раз изучаю многопоточность в java

    • @alexandr6055
      @alexandr6055 Рік тому +1

      Как успехи, прошел год. Работаете уже?

    • @Privet_medved
      @Privet_medved Рік тому

      а я сейчас ее изучаю=)

  • @mikhailazarka6007
    @mikhailazarka6007 Рік тому

    Спасибо, очень понятно объясняешь

  • @sergiytychkin
    @sergiytychkin 2 роки тому

    Спасибо за видео! Сразу лайк.

  • @beerbis
    @beerbis 2 роки тому +6

    дедлоки чаще прочего видят те кто с бд работает. ты в транзакции, ты читаешь что тебе нужно в каком-то порядке, те же банковские счета пусть будут,- появляется нагрузка - ПАМ-ПАМ - дедлок.
    Исключение от MSSQL так и стоит перед глазами: you were chosen as a deadlock victim

  • @hestonli6602
    @hestonli6602 2 роки тому

    Супер ,спасибо за видео 👍

  • @romawar1869
    @romawar1869 2 роки тому

    как всегда интересно и доступно

  • @yushchenkoalexey
    @yushchenkoalexey 2 роки тому

    Спасибо!

  • @namefamily957
    @namefamily957 2 роки тому

    Хорошая и нужная тема :)

  • @tedikvredik
    @tedikvredik 2 роки тому

    Сергей, за видео спасибо! Тоже не написал бы на собесе сам. На 1:06 мАнитор - опечатка )

  • @ukr-pig
    @ukr-pig 3 дні тому

    Привет.А можешь подсказать что происходит внутри sinhronized{ } ?

    • @arhitutorials
      @arhitutorials  3 дні тому +1

      Ничего не происходит. Просто чтоб зайти в этот блок, потоку нужно захватить монитор. Монитор может держать только один поток. Таким образом, код в блоке synchronized может выполняться только одним потоком, который в данный момент владеет монитором.

  • @anjelomanoranjan
    @anjelomanoranjan Рік тому

    Спасибо. А вот эти дедушки могут быть причины багов в работах приложений, веб-сервисов?

  • @stasevich741
    @stasevich741 2 роки тому +1

    как раз у шилдта сегодня про это читал

  • @namefamily957
    @namefamily957 2 роки тому

    Я в windows сталкивался с зависание , но там на С писалось и логика была далека от идеала:)

  • @natalieastafeva4885
    @natalieastafeva4885 2 роки тому

    Такой вопрос, а если в handle для какого-нибудь третьего потока передать resources.get(1),resources.get(2) разве у нас опять все не сломается в дедлок?

    • @arhitutorials
      @arhitutorials  2 роки тому +1

      Не сломается. Поток дождется, пока ресурсы освободятся, захватит нужные локи и сделает свое дело.

  • @nothingextrachannel
    @nothingextrachannel 2 роки тому

    Так deadLock не получается, после sleepa поток отпустит монитор, и все потоки доработают как положено

    • @arhitutorials
      @arhitutorials  2 роки тому +7

      В Java выполнение sleep() не отпускает монитор. По этому картина следующая:
      первый поток запускается, захватывает монитор, останавливается на sleep. Второй поток запускается, захватывает свой первый монитор, а второй захватить не может, так как его удерживает первый поток. Первый поток возобновляет работу после sleep, но свой второй монитор так же не может захватить, так как его удерживает второй поток.

  • @vp4282
    @vp4282 2 роки тому

    А разве не должен весь этот код быть разложен по разным файлам

    • @arhitutorials
      @arhitutorials  2 роки тому +1

      Если по фэншую все делать, то должен) Но для примера кода лучше наоборот все в одну кучу сгрести. Тем, кто будет смотреть исходный код по ссылке, проще в один файл посмотреть и все сразу увидеть, чем бегать по разным.

    • @vp4282
      @vp4282 2 роки тому

      Понял, спасибо за быстрый ответ

  • @Яго-ж2в
    @Яго-ж2в 20 днів тому

    Вот вам простой пример из жизни:
    Джуна не берут никуда без опыта.
    Опыт Джун нигде не может взять, потому что его никто не берёт.
    Не благодарите😂

    • @arhitutorials
      @arhitutorials  20 днів тому +1

      Нужно сделать себе опыт. Не знаю как в бэкэндовой java, но в android разработке это возможно, потому что любой может сделать приложение, выложить его на маркет и демонстрировать в качестве опыта работы. Нужно сделать пару нормальных приложений с исходниками на гитхабе, и можно пробовать устраиваться. У меня есть несколько знакомых, которые таким образом зашли в профессию. Знаю, так как сам их консультировал)