undefined

Задачи по исправлению дедлоков

Java Multithreading
7 уровень , 6 лекция
Доступна

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

undefined
8
Задача
Java Multithreading, 7 уровень, 6 лекция
Недоступна
Убираем deadlock
Используя стратегию избегания deadlock-а сделай так, чтобы он не возник. Метод main не участвует в тестировании. Действуй аналогично примеру из лекций. Изменения вноси только в safeMethod.
undefined
32
Задача
Java Multithreading, 7 уровень, 6 лекция
Недоступна
Определяем порядок захвата монитора
Реализуй логику метода isLockOrderNormal, который должен определять: соответствует ли порядок synchronized блоков в методе someMethodWithSynchronizedBlocks - порядку передаваемых в него аргументов. В случае, если сначала происходит синхронизация по o1, а потом по o2, метод должен вернуть true. Если
undefined
16
Задача
Java Multithreading, 7 уровень, 6 лекция
Недоступна
Убираем deadLock используя открытые вызовы
Синхронизированные методы, которые вызывают внутри себя синхронизированные методы других классов, приводят к dead-lock-у. 1. Перенесите синхронизацию с метода в синхронизированный блок, куда поместите лишь необходимые части кода. 2. Уберите избыточную синхронизацию методов. 3. В стеке вызова методов
Комментарии (66)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Станислав Бынеев Уровень 28 Москва
14 апреля 2021
Рабочее решения валидатор не принимает, нерабочее хавает. WTF. Сидишь циферки sleep подгоняешь, чтобы приняло. Вообще цельной картины в голове нет по всем этим wait, sleep, synchronized etc.
Gleb B. Уровень 28 Минск Беларусь
28 мая 2020
2-я задача - это конечно вынос мозга, два дня убил пока понял, что от меня хотят и как оно должно выглядеть (если бы вопросах других участников не увидел их ход мыслей так бы и не понял, что вообще нужно делать). Задаче не хватает четкости описания.
ram0973 Уровень 41 Набережные Челны Россия
1 апреля 2020
А теперь после всего изученного решите задачу №7 отсюда https://habr.com/ru/article/494494/ Я не смог. Но про крайней мере я понимаю все ключевые слова и смысл происходящего и могу прокачиваться дальше
Сергей Сергей Уровень 41 Chisinau Молдова
19 марта 2020
Обратите внимание на задачу #3: Валидатор принимает оба варианта:

 Thread.currentThread().wait() 
и

wait();
, но надо использовать

 wait();
, иначе кидается исключение

            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
Татьяна Уровень 41 Днепр Украина
10 февраля 2020
Вторая задача - это честно говоря, вынос мозга какой-то - решила, только благодаря комментарию Дани Кельвина от 11 июля 2017 года..., поэтому делаю небольшую подсказку по его комментарию: создаем 2 нити: 1 синхронизирует о1 - пауза(500)- и о2 вторая запускает исходный метод. Важно их стартовать подряд. Потом делаем еще паузу(2000) и проверяем - если порядок правильный - метод выполниться, если нет - дедлок. Состояние второй нити нам подскажет. Лично меня беспокоили вопросы - как сделать, чтобы результат этого самого проверяемого методы не выводился в случае его выполнения(а только true или fasle) - НО! об этом не стоит беспокоиться - такой вывод валидатору вообще не мешает; и как завершить потоки - снова для валидатора незавершенные потоки вообще не проблема...
Роман Уровень 31 Москва Россия
12 ноября 2019
Сам бы не додумался. Только код посмотрел и пытался понять. Вроде понятно, а вроде ни@@@@.
Павел Уровень 29 Санкт-Петербург Россия Expert
11 ноября 2019
в общем эта первая тема которую я пропускаю, ничего не понятно вообще
Павел Уровень 29 Санкт-Петербург Россия Expert
11 ноября 2019
мне кажется решение дедлоков это wait and notify()
Самуил Олегович Уровень 41 Киев Украина
17 сентября 2019
У меня последняя задача оказалась ровно 800-я.
Riccio Уровень 35 Москва Россия Master
14 июля 2019
Попытался решить вторую задачу "читерским" способом, перехватив вывод в консоль. Валя не приняла :((