Добрый времени суток, друзья! И так на 27-ом уровне есть вопрос, который указан в заголовке данного топика. Если честно, я не смог сам ответить на данный вопрос, и в интернете поискал, но не нашел ответа (может быть плохо искал). Помогите пожалуйста разобраться с данным вопросом. Или дайте ссылку, где можно найти ответ на данный вопрос. Всем заранее спасибо!
Зепп Бранниган
80 уровень
Могут ли возникнуть дедлоки при использовании методов wait-notify?
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Soros
4 марта 2020, 15:20
Думаю, что правильный ответ: "Грамотное использование методов wait-notify позволяет снизить риск возникновения дедлоков."
Простой ответ - да, могут
0
Сергей Тугаенко
4 июля 2019, 20:07
На вики есть задача об обедающих философах.
Написано просто и понятно.
Пять философов сидят за круглым столом
У каждого по тарелке со спагетти
Между ними вилки.
Для того чтобы поесть нужно 2 вилки
Философ может размышлять пока не появится нужная вилка либо есть.
Представим следующее.
Каждый философ - это нить
Вилки общий ресурс.
wite() философ ждет вилку
notify() философ кладет вилку
Теперь алгоритм
Если левая вилка занята
леваяВилка.wite()
Берет левую вилку
Если правая вилка занята
праваяВилка.wite()
Философ ест (Thread.sleep(***))
леваяВилка.notify()
праваяВилка.notify()
То есть если все философы одновременно захватят по левой вилке получим deadlock
0