powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / GUI + многопоточночность
12 сообщений из 12, страница 1 из 1
GUI + многопоточночность
    #34665204
Poligon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток...
Есть приложение которое читает данные из файла в потоке (использовал SwingWorker). Как проверить завершился ли поток, а самое важное куда именно вставить проверку (т.е. метод isDone()) чтобы не висло GUI приложение ?
...
Рейтинг: 0 / 0
GUI + многопоточночность
    #34665255
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поток завершает работать когда завершается метод run, интерфейса Runnable
...
Рейтинг: 0 / 0
GUI + многопоточночность
    #34665347
Dan Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно поискать в гугле по ключевым словам invokeLater и Swing
есть стандартные решения для подобных типов задач

Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
GUI + многопоточночность
    #34665682
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dan Blackможно поискать в гугле по ключевым словам invokeLater и Swing
есть стандартные решения для подобных типов задач

SwingWorker это и есть "стандартные решения для подобных типов задач"
...
Рейтинг: 0 / 0
GUI + многопоточночность
    #34666294
Dan Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz Dan Blackможно поискать в гугле по ключевым словам invokeLater и Swing
есть стандартные решения для подобных типов задач

SwingWorker это и есть "стандартные решения для подобных типов задач"Спасибо, не знал :)

Тогда ИМХО автору темы не помешает почитать доки по SwingWorker'у или четче сформулировать вопрос.
...
Рейтинг: 0 / 0
GUI + многопоточночность
    #34669399
Alexey Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PoligonДоброго времени суток...
Есть приложение которое читает данные из файла в потоке (использовал SwingWorker). Как проверить завершился ли поток, а самое важное куда именно вставить проверку (т.е. метод isDone()) чтобы не висло GUI приложение ?

Поток по окончанию работы может выставить флаг како-нить а из потока с гуем можно этот флаг проаерять переодически, например по таймеру или по кнопке
...
Рейтинг: 0 / 0
GUI + многопоточночность
    #34669663
Дуремар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Главная особенность Свинга - то, что эта библиотека принципиально однопоточная. Т.е. к компонентам и их данным в Свинге можго обращаться только из EventDispatchThread. Но есть одна лазейка - методы класса SwingUlilities invokeLater и invokeAndWait. В качестве параметра они пинимают экземпляр класса, реализующего интерфейс Runnuble (в нем есть единственный метод public void run()). Метод invokeLater асинхронный - т.е. он "вставляет" экземпляр Runnuble в конец очереди событий (EventDispatchQueue) и сразу возвращает управление вызвавшему ему потоку. Метод invokeAndWait синхронный - он тоже запихивает Runnuble в EventDispatchQueue но не возвращает управление, пока EventDispatchThread не выполнит метод run. Т.е. оба метода позволяют выполнить код метода run в EventDispatchThread - таким образом из другого потолка можно безопасно обратиться к компонентам и данным Свинга.
...
Рейтинг: 0 / 0
GUI + многопоточночность
    #34669754
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДуремарГлавная особенность Свинга - то, что эта библиотека принципиально однопоточная. Т.е. к компонентам и их данным в Свинге можго обращаться только из EventDispatchThread. Но есть одна лазейка - методы класса SwingUlilities invokeLater и invokeAndWait. В качестве параметра они пинимают экземпляр класса, реализующего интерфейс Runnuble (в нем есть единственный метод public void run()). Метод invokeLater асинхронный - т.е. он "вставляет" экземпляр Runnuble в конец очереди событий (EventDispatchQueue) и сразу возвращает управление вызвавшему ему потоку. Метод invokeAndWait синхронный - он тоже запихивает Runnuble в EventDispatchQueue но не возвращает управление, пока EventDispatchThread не выполнит метод run. Т.е. оба метода позволяют выполнить код метода run в EventDispatchThread - таким образом из другого потолка можно безопасно обратиться к компонентам и данным Свинга.

Тоже про SwingWorker никогда не слышал?
...
Рейтинг: 0 / 0
GUI + многопоточночность
    #34669823
Дуремар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczТоже про SwingWorker никогда не слышал?
Слышал конечно :) Но SwingWorker не догма. И пользоваться им не так уж удобно. Лично я использую свой собственный framework, написанный задолго до того, как SwingWorker официально вошел в релиз 6й явы. Более того, переходя на 6ку я собирался отказаться от самопального framework'а в пользу SwingWorker'а, но изучив его как следует, пришел к выводу, что он совершенно не подходит для решения моих проблем. Более того - он банально неудобен в использовании. Так что пользуюсь своим framework'ом до сих пор, и доволен как бегемот - работает безотказно :)
...
Рейтинг: 0 / 0
GUI + многопоточночность
    #34669848
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДуремарСлышал конечно :) Но SwingWorker не догма. И пользоваться им не так уж удобно. Лично я использую свой собственный framework, написанный задолго до того, как SwingWorker официально вошел в релиз 6й явы. Более того, переходя на 6ку я собирался отказаться от самопального framework'а в пользу SwingWorker'а, но изучив его как следует, пришел к выводу, что он совершенно не подходит для решения моих проблем. Более того - он банально неудобен в использовании. Так что пользуюсь своим framework'ом до сих пор, и доволен как бегемот - работает безотказно :)
Можно по подробнее? Что за проблемы? Почему не подходит?
...
Рейтинг: 0 / 0
GUI + многопоточночность
    #34669957
Дуремар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну например подгрузка/обновление данных с удаленного сервера в фоновом потоке. Во многих случаях мне требуется, чтобы задачи одного типа выполнялись в одном потоке - последовательно - друг за другом. А SwingWirker тупо использует пул потоков. Т.е. он не позволяет работать с очередью задач - что для меня очень важно. Вдобавок там есть едистдвенный collback метод - done() - который никак не описывает жизненный цикл задачи. Т.е. отсутствуют вызовы до старта задачи, обработка ошибки, finally методы.
...
Рейтинг: 0 / 0
GUI + многопоточночность
    #34670266
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / GUI + многопоточночность
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]