|
|
|
Вопрос про потоки
|
|||
|---|---|---|---|
|
#18+
Тема такая. Есть 2 потока (Thread) A и B. Есть некий объект X. Можно ли из потока B узнать что поток A в данный момент блокирует объект X synchronized блоком. При этом никак для этих целей не изменяя A и X (т. е. без всяких флажков-полей, даны только ссылки на объекты). Походу в Java нет такого способа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 12:01 |
|
||
|
Вопрос про потоки
|
|||
|---|---|---|---|
|
#18+
Simple_russian_menПоходу в Java нет такого способа? Скорее всего нет... А getState() не предлагать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 12:05 |
|
||
|
Вопрос про потоки
|
|||
|---|---|---|---|
|
#18+
getState - не даёт информации какой объект блокируется потоком (( Было бы офигенно найти аналог holdsLock показывающий информацию не тока по текущему потоку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 12:14 |
|
||
|
Вопрос про потоки
|
|||
|---|---|---|---|
|
#18+
Simple_russian_men, ReentrantLock подойдёт с tryLock? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 12:29 |
|
||
|
Вопрос про потоки
|
|||
|---|---|---|---|
|
#18+
ReentrantLock - прикольно, но тут опять же не получится посмотреть что именно за объект лочит тред. Плюс, к сожалению поток A пишу не я, а там используется именно synchronized. Видимо это всё-таки невозможно, но попытаться стоило) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 13:10 |
|
||
|
Вопрос про потоки
|
|||
|---|---|---|---|
|
#18+
Simple_russian_men, Во-первых: а зачем? Во-вторых - дамп потоков. По дампу видно какой поток находится в конкретном методе, а так же видно если потом заблокирован на synchronized. По-моему там какая-то инфа по объету тоже пишется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 17:16 |
|
||
|
Вопрос про потоки
|
|||
|---|---|---|---|
|
#18+
java.lang.management.ThreadMXBean ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 17:17 |
|
||
|
Вопрос про потоки
|
|||
|---|---|---|---|
|
#18+
Simple_russian_men, Пытаешься отловить багу в библиотеке без исходников? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 17:20 |
|
||
|
Вопрос про потоки
|
|||
|---|---|---|---|
|
#18+
Simple_russian_menReentrantLock - прикольно, но тут опять же не получится посмотреть что именно за объект лочит тред. Плюс, к сожалению поток A пишу не я, а там используется именно synchronized. Видимо это всё-таки невозможно, но попытаться стоило)1) Для проверки, заблокирован монитор объекта или нет, можно использовать Unsafe.tryMonitorEnter(). 2) Если надо посмотреть, кто занял монитор, то ThreadMXBean.dumpAllThread(true, false)[i].getLockedMonitors(), и там по identity hash code смотрите. Только помните, что не все JVM поддерживают это (ThreadMXBean.isObjectMonitorUsageSupported). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2015, 21:40 |
|
||
|
Вопрос про потоки
|
|||
|---|---|---|---|
|
#18+
Если кому интересно, проблему решили переделав класс A (инфа о блокировках через поля класса). Про ThreadMXBean не слышал, будет ещё подобная проблема, попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2015, 14:39 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38861980&tid=2125324]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 255ms |
| total: | 399ms |

| 0 / 0 |
