Закрытие JOptionPane вызывает тупик в Java Swing - PullRequest
3 голосов
/ 14 октября 2011

У меня есть приложение, которое работает нормально на большинстве сайтов. Но на одном сайте, на котором размещено приложение в Citrix Box, возникла проблема взаимоблокировки. Я запустил профилировщик на сессии и получил сюрприз. Оператор, вызывающий взаимоблокировку, выглядит как оператор, закрывающий диалоговое окно JOptionPane. Пожалуйста, смотрите прилагаемый дисплей.

Итак, у меня три вопроса:

  1. Правильно ли мое толкование?
  2. Любая идея, почему это может произойти.
  3. Что я могу сделать в коде, чтобы предотвратить это?

Заранее благодарю за помощь.

Эллиот Profiler display

Ответы [ 2 ]

5 голосов
/ 14 октября 2011

Swing не является потокобезопасным. Возможно, ваше приложение вызывает методы Swing GUI извне потока обработки событий.

Если вы можете уменьшить это значение до минимального значения, которое все еще воспроизводит проблему, вы либо 1) сами найдете причину в процессе, либо иным образом 2) получите гораздо больший шанс получить помощь от кого-то другого.

4 голосов
/ 14 октября 2011
  1. Не знаю, но если это так ...
  2. Вызов методов GUI (обновление GUI) с EDT.
  3. Вызовите методы GUI на EDT.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...