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

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

Відкрита

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

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