|
|
|
Потоки и дедлок
|
|||
|---|---|---|---|
|
#18+
Добрый день. Вопрос не сколько конкретный, сколько философский. Интересует в первую очередь мнение в принципе, так сказать, поскольку для конкретных рецептов информации недостаточно. Условия задачи: Имеется свинг-приложение (фрейм с меню баром) которое служит каркасом для группы диалогов. Диалоги вызываются из меню и отображаются на панели каркасного приложения. Все диалоги реализованы следующим образром: имеется управляющий класс, который наследует интерфейс известный каркасу. Каркасное приложение дергает методы (show, hide и.т.д.) и такми образом говорит подчиненному диалогу, что делать. Соответственно, подчиненный диалог (через метод управляющего класса) предоставляет приложению JPanel, которую он хотел бы показывать пользователю. Так вот. Для этого самого каркасного приложения разработан специальный диалог. Главная его особенность заключается в том, что он автоматически обновляется - т.е. ползет в БД за данными и потом перерисовывает элементы. Делается это часто - раз в 2 секунды. Возникает следующая ситуация - при нажатии на меню каркасного приложения - иногда приложение виснет. Меню не открывается. Т.е. навел на меню - нажал - все, приехали. Напомню, что взаимодействие между приложением и диалогом происходит исключительно через специальный класс, а отображается приложением специальная паналь, которую ему дает диалог. Внимание, вопрос: Господа, на что обратить внимание при поиске причины данной баги? Какие общие советы для подобных конструкций вы могли бы дать? Детали: Каркасное приложение не мое, но исходники доступны. При желании там тоже можно править, но, конечно, не хочется. Диалог - мой. История. Подобные висы я получал на своем диалоге, когда разрабатывал вызов окон (JDialog) - как реакцию на действия пользователя. Т.е. по панели щелкает пользователь а ему попап что-то там вылезает. Но подобные висы я благополучно обходил - поскольку это внутренние проблемы диалога. Здесь же (с щелчком по меню) - уже два участника и с какой стороны подходить к задаче пока не понял. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 11:42 |
|
||
|
Потоки и дедлок
|
|||
|---|---|---|---|
|
#18+
выложи серцы чтоль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2006, 19:13 |
|
||
|
Потоки и дедлок
|
|||
|---|---|---|---|
|
#18+
Ответ на задачу был найден. Проблема была в том, что приложение в процессе обновления объектов на экране сильно модифицировала отображаемые объекты, в том числе добавляло/удаляло MouseListener. Как оказалось, этого ыбло достаточно для дедлока. Решение заключалось в том, чтобы добавлять слушатель только единожды, ессно модифицировав его так, чтобы чтобы в нудный момент он не срабатывал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2006, 15:01 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2148427]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
180ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 521ms |

| 0 / 0 |
