|
|
|
Deadlock
|
|||
|---|---|---|---|
|
#18+
Всем привет, Объясните плиз почему может возникнуть deadlock в такой ситуации: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2014, 12:09 |
|
||
|
Deadlock
|
|||
|---|---|---|---|
|
#18+
Adva, Не до конца понятно с того поста. Т.е. когда поток будет выполнять doSmth() у класса Child он захватит монитор у объекта класса Child, которому также доступны методы класса Parent и соответственно он захватит монитор класса Parent. При выполнении super.doSmth() мы попытаемся получить монитор который был уже захвачен текущим объектом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2014, 12:58 |
|
||
|
Deadlock
|
|||
|---|---|---|---|
|
#18+
YamahaR1 , Кто вам сказал, что в данной ситуации возможен deadlock? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2014, 14:36 |
|
||
|
Deadlock
|
|||
|---|---|---|---|
|
#18+
YamahaR1Объясните плиз почему может возникнуть deadlock в такой ситуации: Данный код слабо связан с дедлоком. Для возникновения взаимоблокировки нужны минимум два потока и два критических ресурса. Если создать 2 экземпляра приведенных классов, то можно используя их заблокировать два потока. К наследованию это отношения не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2014, 19:58 |
|
||
|
Deadlock
|
|||
|---|---|---|---|
|
#18+
cdtyjv, это пример из книги и подписан он таким образом: Code that would Deadlock if Intrinsic Locks were Not Reentrant. Blazkowicz, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 00:32 |
|
||
|
Deadlock
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 00:44 |
|
||
|
Deadlock
|
|||
|---|---|---|---|
|
#18+
YamahaR1это пример из книги и подписан он таким образом: Code that would Deadlock if Intrinsic Locks were Not Reentrant Ох уж мне эти писатели книжек. Как можно пугать неокрепшие умы мифическими "если бы", не имеющими отношение к жизни. В такой манере можно много понаписать страшилок "что бы было бы, если бы у бабушки...." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 03:38 |
|
||
|
Deadlock
|
|||
|---|---|---|---|
|
#18+
YamahaR1cdtyjv, это пример из книги и подписан он таким образом: Code that would Deadlock if Intrinsic Locks were Not Reentrant. Blazkowicz, спасибо. Гениальная книга. Вот только в Java - synchronized это Reentrant Lock. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 09:11 |
|
||
|
Deadlock
|
|||
|---|---|---|---|
|
#18+
YamahaR1подписан он таким образом: Code that would Deadlock if Intrinsic Locks were Not Reentrant. Проблема не в Java, а с английским. Правельный перевод: "Код, который вызывал бы блокировку если синхронизация не допускала повторного вхождения" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 06:41 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=156&tid=2126421]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 408ms |

| 0 / 0 |
