Багатопоточніcть в Java 😈. Сортування Злиттям (Merge Sort) на Fork/Join фреймворку.

Поділитися
Вставка
  • Опубліковано 22 тра 2024
  • 👉 Приєднуйся до Bobocode Community: www.bobocode.com/
    ____________________________________________
    Patreon: / bobocode
    GitHub: github.com/bobocode-projects
    Telegram: t.me/bobocode​
    LinkedIn: bit.ly/2RWPQF5
    Twitter: bit.ly/3vaQiOl
    Тарас в LinkedIn: bit.ly/2ElWg8J
    Тарас в Twitter: bit.ly/33Pmuwg
    ____________________________________________
    9-те заняття тренувальної програми Ultimate Enterprise Java (2021).
    УВАГА! Відеозапис не містить активної частини заняття.
    00:00 - Нарізка основних моментів
    03:16 - Початок
    03:35 - Чому важливо вивчати багатопоточність?
    07:02 - 2 причини, чому багатопоточність є складною
    08:17 - Модель памʼяті Java
    09:15 - Дві потенційні проблеми
    10:29 - 1. Проблема неконсистентності даних
    13:09 - 2. Проблема застарілості даних
    15:31 - Топова цитата про багатопоточність в Java
    17:09 - Як запустити код в новому потоці?
    19:23 - Як перевірити стан потоку?
    21:25 - Проблема неконсистентності (Приклад коду)
    24:35 - Чому volatile не вирішує проблему неконсистентності?
    25:47 - Що таке synchronized?
    27:30 - Основні "примітиви" багатопоточності в Java
    30:01 - Що має знати Java-розробник?
    31:38 - Як заблокувати потік?
    34:59 - Що таке "Deadlock"?
    39:23 - Як управляти потоком вручну? (wait, notify)
    42:03 - Коротко про Concurrency Util
    44:47 - Приклади з Executors
    46:45 - Fork/Join framework
    47:36 - 🔥 Багатопоточне Сортування Злиттям (Merge Sort)
    54:12 - Реалізовуємо метод merge
    56:28 - Найцікавіше про Fork/Join framework
    58:09 - Як створити свій Fork/Join pool?
    01:00:25 - Чому важливо знати про спільний Fork/Join pool?
    01:02:27 - Заключне слово
    #opensource #java #education

КОМЕНТАРІ • 22

  • @Bobocode
    @Bobocode  2 роки тому +2

    👉 Навчання від Bobocode: bit.ly/3IRrJhj

  • @user-lx8rv4ij1t
    @user-lx8rv4ij1t Рік тому +9

    Дякую! Хай квітне український UA-cam.

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

    Дякую за лексію, корисно!

  • @Bobocode
    @Bobocode  2 роки тому +9

    ДЗ:
    1. Реалізувати багатопоточне Сортування Злиттям (Merge Sort) використовуючи Fork/Join фреймворк.
    2. Порівняти час виконання звичайного і багатопоточного сортування на великому обʼємі даних (200_000+).
    Удачі! 💪

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

      Перевірив в мене меньш ніж 10 млн елементів сортує швидше в одному потоці. Заміряв, 1 виклик .fork() займає чомусь аж 1мс, не розумію чого так довго якщо потокі вже по суті створені. Виходить що дуже дрібні задачі паралелити нема сенсу.

    • @user-nq4bt9lm2d
      @user-nq4bt9lm2d Рік тому +2

      Хто хоче краще розібратись в темі, рекомендую книгу Герберт Шілд "Java, повний посібник". Там є розділ який цьому присвячений. Описані основні класи, методи та приклади використання.

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

    Дякую за чудовий плейлист)
    пс: M1 Pro різниця в 3 рази з commonPool (4390 ms i 12908 ms) массив 100М інтів

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

    Крута лекція!

  • @User-vr6if
    @User-vr6if 2 роки тому +1

    Тарас, крутий урок! Ти реально вмієш гарно пояснити

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

      Дякую! ☺️

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

    А чому це відео не у плейлісті "Ultimate Enterprise Java"?

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

      Довго пояснювати. Вже там 🙂

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

    Чи є якісь ресурси де є задачі по багатопотоковості, на кшталт leetcode?

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

      В кінці уроку було, але може вже є щось таке)

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

      Я не зустрічав :)

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

      Є, але вони не дуже прикольні. Типу codegym/javarush, там є задачі на це.))) Правда Fork/join там точно немає. Все-таки на відео сказано правильно, що найкраще відкрити самому IDE і там придумувати самому.))

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

    чи можна досягти паралельності роботи потоків та консистентності даних одночасно?
    наприклад 2 потоки працювали над одними даними паралельно а потім результат смерджили якось )
    якщо у нас 10 потоків та використовувати synchronized то це послідовна обробка данних у різних потоках
    яка різниця якщо 9ть чекають
    навіщо тоді 10 потоків якщо 1-дин потік також послідовно все обробив би. Був один мейн потік та один створений додатково

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

      Можна :)

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

      @@Bobocode змінив чи можна досягти на як можна досягти?

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

      @@caffeinejavacode1475 залежно від того, яку задачу ви хочете виконати. У відео, під яким ви пишете коментар є приклад паралельності роботи потоків при сортуванні масиву з викоританням Fork/Join.

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

    Ой шо сказати , всьо про всьо і ні про що, розмовляйте однією мовою.

    • @Bobocode
      @Bobocode  2 роки тому +13

      Буду радий подивитися, коли зробите більш повноцінний урок по багатопоточності.