Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Deadlock / 11 сообщений из 11, страница 1 из 1
19.10.2014, 12:09
    #38780961
YamahaR1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Deadlock
Всем привет,

Объясните плиз почему может возникнуть deadlock в такой ситуации:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
class Parent {
 public void synchronized doSmth() {
 }
} 

class Child extends Parent {
 public void synchronized doSmth() {
  super.doSmth();
 }
}
...
Рейтинг: 0 / 0
19.10.2014, 12:24
    #38780965
Adva
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Deadlock
...
Рейтинг: 0 / 0
19.10.2014, 12:58
    #38780974
YamahaR1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Deadlock
Adva,

Не до конца понятно с того поста. Т.е. когда поток будет выполнять doSmth() у класса Child он захватит монитор у объекта класса Child, которому также доступны методы класса Parent и соответственно он захватит монитор класса Parent. При выполнении super.doSmth() мы попытаемся получить монитор который был уже захвачен текущим объектом?
...
Рейтинг: 0 / 0
19.10.2014, 14:36
    #38781028
cdtyjv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Deadlock
YamahaR1 ,
Кто вам сказал, что в данной ситуации возможен deadlock?
...
Рейтинг: 0 / 0
19.10.2014, 19:58
    #38781219
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Deadlock
YamahaR1Объясните плиз почему может возникнуть deadlock в такой ситуации:

Данный код слабо связан с дедлоком. Для возникновения взаимоблокировки нужны минимум два потока и два критических ресурса.
Если создать 2 экземпляра приведенных классов, то можно используя их заблокировать два потока. К наследованию это отношения не имеет.
...
Рейтинг: 0 / 0
20.10.2014, 00:32
    #38781342
YamahaR1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Deadlock
cdtyjv,

это пример из книги и подписан он таким образом: Code that would Deadlock if Intrinsic Locks were Not Reentrant.

Blazkowicz, спасибо.
...
Рейтинг: 0 / 0
20.10.2014, 00:44
    #38781344
Adva
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Deadlock
YamahaR1,

тут смысл в том что объект один и тот же. И если поток зашел в фукцию объекта-потомка, то он сможет зайти и в родительскую функцию.
Например, здесь написано следующее:

Reentrant Synchronization

Recall that a thread cannot acquire a lock owned by another thread. But a thread can acquire a lock that it already owns. Allowing a thread to acquire the same lock more than once enables reentrant synchronization. This describes a situation where synchronized code, directly or indirectly, invokes a method that also contains synchronized code, and both sets of code use the same lock. Without reentrant synchronization, synchronized code would have to take many additional precautions to avoid having a thread cause itself to block.
...
Рейтинг: 0 / 0
20.10.2014, 03:38
    #38781368
_newcomer_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Deadlock
YamahaR1это пример из книги и подписан он таким образом: Code that would Deadlock if Intrinsic Locks were Not Reentrant
Ох уж мне эти писатели книжек. Как можно пугать неокрепшие умы мифическими "если бы", не имеющими отношение к жизни.
В такой манере можно много понаписать страшилок "что бы было бы, если бы у бабушки...."
...
Рейтинг: 0 / 0
20.10.2014, 09:11
    #38781438
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Deadlock
YamahaR1cdtyjv,
это пример из книги и подписан он таким образом: Code that would Deadlock if Intrinsic Locks were Not Reentrant.
Blazkowicz, спасибо.
Гениальная книга. Вот только в Java - synchronized это Reentrant Lock.
...
Рейтинг: 0 / 0
21.10.2014, 06:41
    #38782406
пролетевший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Deadlock
YamahaR1подписан он таким образом: Code that would Deadlock if Intrinsic Locks were Not Reentrant.
Проблема не в Java, а с английским. Правельный перевод: "Код, который вызывал бы блокировку если синхронизация не допускала повторного вхождения"
...
Рейтинг: 0 / 0
21.10.2014, 11:41
    #38782622
YamahaR1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Deadlock
пролетевший,

Я уже понял что лопухнулся, невниматильно прочитал, спс.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Deadlock / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]