JavaRush /Курси /Java Multithreading /Завдання з виправлення дідлок

Завдання з виправлення дідлок

Java Multithreading
Рівень 7, Лекція 6
Відкрита

— Привіт, Аміго!

8
Задача
Java Multithreading, 7 рівень, 6 лекція
Недоступна
Прибираємо deadlock
Прибираємо deadlock
32
Задача
Java Multithreading, 7 рівень, 6 лекція
Недоступна
Визначаємо порядок захоплення монітора
Визначаємо порядок захоплення монітора
16
Задача
Java Multithreading, 7 рівень, 6 лекція
Недоступна
Прибираємо deadLock використовуючи відкриті виклики
Прибираємо deadLock використовуючи відкриті виклики
Коментарі (2)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Olexandr Рівень 15
27 липня 2024
хардова задача це overkill... Особисто в мене шансів не було... Те, що вдалося нагуглити про перевірку порядку блокувань, в тому числі і на JavaRush - перевірка через хешкоди об'єктів - тут не підходять... Я вирішив не ламати голову тим, що не розумію - і пішов за вірним рішенням. Рішення через потік вкладений в інший потік і спостерігання за тим, як він заблокується - це геніально)))) Але щоб в цьому розібратися за допомогою ChatGpt - пішло більше години. Але круто, навіть роздрукував собі. Може стану QA на Java та й пригодиться))))
19 жовтня 2024
Прочитав цей коментар і спробував зробити завдання сам не підглядаючи у розв'язання. (Робили ми на пару з Gemini, ChatGPT чогось мені не зайшов) Насправді не обов'язково створювати потік у потокі (нитку і нитці), їх можна створити окремо одна від одної і запустити одна в одній, щоб отримати в середені одного потоку deadlock з допомогою іншого вкладеного потоку. Поморочився із очікуванням старту внутрішньої нитки для гарантованого deadlock і все таки доробив його підглядаючи в готове рішення (не здогадався створити цикл з Thread.sleep(1) підбирав значення sleep вручну, що неправильно і викликало незадоволення залежністю рішення від потужності комп'ютера)