|
|
|
holdsLock для другого потока
|
|||
|---|---|---|---|
|
#18+
Имеется такой код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. ну и вопрос - как узнать, что мой поток ждет именно monitor? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 12:43:27 |
|
||
|
holdsLock для другого потока
|
|||
|---|---|---|---|
|
#18+
у вас явно используется переменная monitor. Так и узнать. Или что вы имеете ввиду. Не стоит использовать сам Thread для synchronize. Создайте отдельный объект для этой цели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 12:55:48 |
|
||
|
holdsLock для другого потока
|
|||
|---|---|---|---|
|
#18+
я имел ввиду то, что узнать можно с помощью метода Thread.holdsLock(monitor), но он статичесский и применяется только к текущему потоку. И я не понимаю, как можно сделать что-то такое: Код: java 1. 2. 3. 4. 5. 6. Об том, что сам thread не стоит использоват в качестве потока ятоже не понимаю почему - время его жизни больше чем всех других объектов здесь и он за это время не станет null. Так почему же его не использовать в качестве монитора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 13:03:53 |
|
||
|
holdsLock для другого потока
|
|||
|---|---|---|---|
|
#18+
msangelя имел ввиду то, что узнать можно с помощью метода Thread.holdsLock(monitor), но он статичесский и применяется только к текущему потоку. И я не понимаю, как можно сделать что-то такое: ThreadMXBean/ThreadInfo/LockInfo для мониторинга за другими потоками. msangelОб том, что сам thread не стоит использоват в качестве потока ятоже не понимаю почему - время его жизни больше чем всех других объектов здесь и он за это время не станет null. Так почему же его не использовать в качестве монитора? Инкапсуляция. Thread это публичый и общедоступный в JVM объект. Вы где-нибудь в другом месте кода (большого проекта) по привычке сделаете на нем synchronized и получите DeadLock. Поэтому лучше синхронизироваться по приватным финальным полям, чтобы их видимость совпадала с блоками синхронизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 13:12:49 |
|
||
|
holdsLock для другого потока
|
|||
|---|---|---|---|
|
#18+
"!" перед monitor.holdsLock(monitor) пропустил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 13:13:05 |
|
||
|
holdsLock для другого потока
|
|||
|---|---|---|---|
|
#18+
ок. спс. я попробую. просто интерестно было, есть ли реализзация этого простыми методами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 13:14:56 |
|
||
|
holdsLock для другого потока
|
|||
|---|---|---|---|
|
#18+
Thread.holdsLock() не имеет смысл для других потоков. Так как если поток уснул например на wait, то он уже не держит лока. Т.е. это некоторое мгновенное состояние. Так как нахождение в блокие synchronized всегда стараются минимизировать. Соответсвенно с точки зрения других потоков результат этого метода может стать не актуальным сразу после получение значения. Поэтому он именно так и реализован, что его можно получить только в самом текущем потоке, где значение в данный момент времени всегда актуально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 13:20:01 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37856849&tid=2131467]: |
0ms |
get settings: |
17ms |
get forum list: |
29ms |
check forum access: |
7ms |
check topic access: |
8ms |
track hit: |
49ms |
get topic data: |
22ms |
get forum data: |
5ms |
get page messages: |
106ms |
get tp. blocked users: |
3ms |
| others: | 343ms |
| total: | 589ms |

| 0 / 0 |
