Суббота, 2025-02-08, 00:12:36
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
21.10 Threads and Swing
CHerryДата: Суббота, 2011-10-22, 21:42:44 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 141
Репутация: 3732
Статус: Offline
Поскольку Swing проектируется по однопоточной модели, его API не синхронизирован и следовательно не защищен от попыток другими потоками изменения своих данных. Это значит, что мы может получить опасное столкновение в GUI, если попытается обновить элементы из любого другого потока, а не напрямую из потока событий. Такие действия могут привести к повреждению данных, выбросу исключений и массе других опасных проблем, которые чертовски трудно обнаружить и отладить. Чтобы избежать этой проблемы, всегда следует обновлять GUI из потока событий.

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

Первое правило использования потоков (threads): если можно, то старайтесь этого избежать. Потоки могут быть сложны в использовании, а также затрудняют отладку программ. Чтобы обезопасить себя от возможности "мертвых" блокировок ("клинчей"), вы должны проявлять исключительную заботу о том, чтобы создаваемые вами потоки не вызывали каких.либо методов компонентов Swing. Помните, что после того, как компонент Swing реализован, обращаться к нему или влиять на него следует только из потока диспетчеризации событий (event-dispatching thread).

статья про потоки и swing
 
  • Страница 1 из 1
  • 1
Поиск: