undefined

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

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

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

undefined
8
Задача
Java Multithreading, 7 уровень, 4 лекция
Недоступна
Создаем deadlock
Расставь модификаторы так, чтобы при работе с этим кодом появился deadlock. Метод main порождает deadlock, поэтому не участвует в тестировании.
undefined
8
Задача
Java Multithreading, 7 уровень, 4 лекция
Недоступна
Второй вариант deadlock
В методе secondMethod расставь synchronized блоки так, чтобы при использовании класса Solution нитями образовывался deadlock.
undefined
8
Задача
Java Multithreading, 7 уровень, 4 лекция
Недоступна
Модификаторы и deadlock
Расставь модификаторы так, чтобы при работе с этим кодом появился deadlock. Метод main порождает deadlock, поэтому не участвует в тестировании.
Комментарии (43)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Valua Sinicyn Уровень 41 Харьков Украина
8 января 2021
Две из трех задач, про драку и дружбу двух котов.
Pig Man Уровень 41
22 декабря 2020
Понял, что дэдлок я сам вряд ли увижу, хотя и знаю, что это..
Vladimir “Rain_Senpai1995” Soldatenko Уровень 35 Киев Украина
27 ноября 2020
Ребзя, Java Concurrency Ютуб плейлист
Микита Уровень 41 Чернівці Україна
13 июня 2020
Kex Уровень 38 Тольятти Expert
27 мая 2020
аххах, спасибо но ломать и так умеем)
Riccio Уровень 35 Москва Россия Master
14 июля 2019
А в чем прикол давать задачи и в условии прописывать ответ?
S3R3N1TY Уровень 37 Санкт-Петербург Россия Expert
15 марта 2019
самый короткий пример Дедлока :)

   public static void main(String[] args) throws InterruptedException {
        Thread.currentThread().join();
    }
Andrii Gorshunov Уровень 41 Польша Expert
4 февраля 2019
метод с ключевым словом synchronized блокирует текущий объект целиком. равнозначно что блок synchronized(this){}. Первая задача: аналогично, что я описал в третьей. Один метод вызывает другой, а синхронизация на this. Во второй метод не зайдет, потому что уже блок висит на всем объекте класса. Вторая задача: Когда порядок блокировки разный, тогда происходит deadlock. В первом методе порядок блокировки идет this, затем lock. Второй метод надо сделать.... ну вы поняли :) Третья задача: любой метод с synchronized блокирует текущий объект. Создаются два потока, в них два объекта(одного и того же класса). Каждый из них вызывает первый метод sout. Так как этот метод synchronized, то уже мютекс включается на всем объекте этого класса. То есть происходит блокировка. Метод sout в конце, вызывает второй synchronzied метод sout2. Однако он блокируется тоже на объекте данного класса, который уже заблокирован у нас благодаря первому методу - sout. Два потока успели выполнить только первый метод и ждут, пока сами же освободят мютекс. Они стоят перед вратами во второй метод sout2 ( никогда не зайдут туда). Консоль этому подтверждение: 111: first: second 111: second: first
RuslanN Уровень 35 Нижний Новгород Россия
28 января 2019
вообще не понимаю. ноль
Vitaly Khan Уровень 40 Россия Master
7 января 2019
если вам пока еще трудно понять происхождение дедлока, упорно изучайте задачи 1 и 2 (они идентичны), пока не наступит прозрение!) когда начали понимать, попробуйте объяснить проблему дэдлока своей кошке!))) и тогда 3ю задачу вы должны решить очень быстро и без подсказок. ее можно воспринимать, как математическую загадку. если понимаете суть, ответите сразу же... но подумать чуть-чуть придется)