![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
В примерах Swing GUI встречается следующая конструкция, используемая, когда надо сделать какие-то действия (наверное, поменять цвет, например). Создается обьект и ставится в очередь на выполнение. Это похоже на сервис , предоставляемый java.util.concurrent.Executors , но используется системный поток. Интересны мнения и комментарии - насколько это желательно применять и в каких случаях (только ли связаное с GUI).
|
|||
|
||||
| lando1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 30.4.2007 Репутация: нет Всего: нет |
Я например его использую в случае, когда есть какой-то длинный процесс в основном потоке и надо отобразить его статус в свинге -
если просто писать setValue в прогресс баре - то он обновиться только когда процесс завершиться. |
|||
|
||||
| COVD |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
возможно, кроме setValue надо еще validate() было делать, тогда бы и основной поток обновил. Я предполагал, что если все действия с визуальными компонентами поместить в один поток, то это снимет проблемы с синхронизацией. Собственно, так и оказалось. На rsdn в теме "Swing, нитевая безопасность и Эккель" приведена цитата из документации:
Практически все компоненты, кроме ТехтField.setText() , требуют синхронизации или их надо трогать из одного потока. Если действия инициированы например нажатием кнопки на интерфейсе, то они выполняются в потоке AWT-EventQueue и не требуют синхронизации (в предположении, что такой поток один). А вот если внешний поток, то правильнее использовать java.awt.EventQueue.invokeLater или SwingUtilities.invokeLater . Это все описано в http://java.sun.com/docs/books/tutorial/uiswing/concurrency/index.html ://http://java.sun.com/docs/books/tuto...ncy/index.html ://http://java.sun.com/docs/books/tuto...ncy/index.html Это сообщение отредактировал(а) COVD - 21.8.2007, 01:51 |
||||
|
|||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |