![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Grizli |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 30.3.2012 Репутация: нет Всего: нет |
У меня есть тяжеловесная работа по коннекту, закачке данных. Как мне отследить, чтобы весь GUI работал только в EDT (Event Dispatch Thread) потоке, а рабочие потоки не совались со своей работой в него.
Это сообщение отредактировал(а) Grizli - 15.4.2012, 13:34 |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
||||
|
||||
Avaj |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 14.7.2008 Где: Владивосток. Репутация: нет Всего: 3 |
SwingWorker поможет?
|
|||
|
||||
Grizli |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 30.3.2012 Репутация: нет Всего: нет |
Ошибка
Код в классе Main
|
||||
|
|||||
Mirkes |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 2 Всего: 17 |
Насколько я помню, main выполняется не в EDT. Поэтому правильным будет код
-------------------- Mirkes |
||||||
|
|||||||
Skipy |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 4 Всего: 16 |
Согласно руководству Sun setVisible можно вызывать напрямую из main: http://java.sun.com/products/jfc/tsc/artic...s/threads1.html А упомянутый IllegalAccessError не имеет отношения к потокам: http://docs.oracle.com/javase/6/docs/api/j...ccessError.html
Очень похоже на то, что код был откомпилирован с версией библиотеки, где этот конструктор был public, а при выполнении используется другая версия, в которой конструктор уже закрыт для прямого вызова. |
||||||||||
|
|||||||||||
mstalker26 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 4.7.2009 Репутация: 3 Всего: 11 |
Skipy, а как же http://docs.oracle.com/javase/tutorial/uis...cy/initial.html Edit: Там создается GUI и вызывается метод setVisible не из main. Где правда ![]() Это сообщение отредактировал(а) mstalker26 - 26.4.2012, 13:56 --------------------
Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом. |
|||
|
||||
Mirkes |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 2 Всего: 17 |
Автор ХОТЕЛ что бы весь GUI работал из EDT. А main вызывается не из EDT. Ровно это я и имел в виду. -------------------- Mirkes |
||||
|
|||||
Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 4 Всего: 16 |
Тут дело в чем... Видимые проблемы происходят из-за того, что нет нормальной синхронизации между EDT и фоновыми потоками. Если мы будем использовать invokeLаter или invokeWait - проблем не будет гарантированно. Если мы вызовем setVisible из главного потока и это будет последней инструкцией в этом потоке - проблем не будет с очень высокой долей вероятности. Это все равно что поднимать машину на подъемнике. Можно просто поднять, если подъемник не сломается, то проблем не будет. А можно поднять, подложить бетонные блоки и опустить машину на них, тогда проблем не будет гарантированно. Какой способ использовать - каждый решает сам. У меня за более чем 16 лет разработки на Java не было проблем из-за того, что я setVisible вызывал из основного потока. В глубине setVisible всего лишь показывает native-окно ОС и посылает ему асинхронное событие перерисовки, которое точно выполнится в EDT. |
|||
|
||||
mstalker26 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 4.7.2009 Репутация: 3 Всего: 11 |
Я тогда подстрахуюсь бетонными блоками
![]() Спасибо за ответ, Skipy, как всегда кратко и по делу. --------------------
Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |