Каков ваш метод обработки и что он делает?Я полагаю, что Swing по большей части не использует синхронизацию, и его документация фактически заявляет в своем API, что он не является поточно-ориентированным (например, посмотрите здесь ).Вместо этого он использует один поток для взаимодействия с пользователем и рисования программы, EDT или Поток диспетчеризации событий , и все программы, взаимодействующие с Swing, должны уважать эту модель одного потока, вызывая большинство всех вызовов Swing в EDT.Я подозреваю, что это где ваша проблема.
Подробнее о многопоточности Swing и использовании фоновых потоков см. Здесь: Параллельность в Swing
Редактировать 1
(Из моего комментария) Я должен также спросить, почему этот метод синхронизирован?Поскольку мы помещаем все вызовы Swing в очередь событий, это, вероятно, не является необходимым и может быть вреднымЗамораживание программы Swing почти всегда происходит из-за проблемы параллелизма, поэтому это обсуждение актуально.
Возможно, вы захотите создать небольшую скомпилируемую тестовую программу ( SSCCE ), которая демонстрирует вашу проблему (зависание графического интерфейса пользователя), и опубликуйте ее здесь, чтобы мы могли проверить ее самостоятельно.