Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Подскаэите, как в правильно организовать в ... / 10 сообщений из 10, страница 1 из 1
15.08.2012, 15:48:10
    #37917918
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскаэите, как в правильно организовать в ...
Доброго времени суток.
Есть десктопное приложение. Ему необходимо, периодически, в фоне проводить соединение по сокету и передавать некие данные на сервер по сокету.
Клиент-сервер есть. Собственно десктопное приложение тоже есть.
А вот как правильно организовать фоновую задачу - вошел в стопор и все ...
Я думаю написать класс extends от Thread или implements от Runnable. В нем бесконечный while (true) и уже в этом цикле организовать прием данных с сервера.
И, если принял данные, то предал в десктопное приложение и все в гуд.
Поправьте, если ход моих мыслей не тот.

За ранее спасибо.
...
Рейтинг: 0 / 0
15.08.2012, 15:58:06
    #37917937
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскаэите, как в правильно организовать в ...
Ну, правильный ход мыслей. Но лучше сразу Executors подключить.
Есть ещё SwingWorker он сразу с EDT ещё и синхронизирует. Просто не понятна конкретика. Любое общение с сервере на GUI нужно делать фоновым потоком, чтобы не тормозить EDT.
...
Рейтинг: 0 / 0
15.08.2012, 15:58:26
    #37917939
oneHalf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскаэите, как в правильно организовать в ...
Если есть слово периодически - то в яве есть таймеры - спец. классы как раз для работы в отдельном потоке. А также можно их пушки по воробьям - Quartz - умеет гораздо больше как говорят, ставят даже на сервера приложений.
...
Рейтинг: 0 / 0
15.08.2012, 16:08:20
    #37917964
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскаэите, как в правильно организовать в ...
BlazkowiczНу, правильный ход мыслей. Но лучше сразу Executors подключить.
Есть ещё SwingWorker он сразу с EDT ещё и синхронизирует. Просто не понятна конкретика. Любое общение с сервере на GUI нужно делать фоновым потоком, чтобы не тормозить EDT.

Ага, понял, попробую.

oneHalf Если есть слово периодически - то в яве есть таймеры - спец. классы как раз для работы в отдельном потоке. А также можно их пушки по воробьям - Quartz - умеет гораздо больше как говорят, ставят даже на сервера приложений. .
С Quartz никогда не сталкивался.
А за таймеры даже забыл - стопор.


Спасибо всем!!!
И удачных удач!!!
...
Рейтинг: 0 / 0
15.08.2012, 16:10:39
    #37917971
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскаэите, как в правильно организовать в ...
HunterNomadС Quartz никогда не сталкивался.
А за таймеры даже забыл - стопор.
Спасибо всем!!!
И удачных удач!!!

С таймерами беда, что если будет непойманный эксепшн то тред умирает, пичалька, юзайте Executors
...
Рейтинг: 0 / 0
15.08.2012, 16:11:02
    #37917972
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскаэите, как в правильно организовать в ...
Нафиг кварц на клиенте?
Executors.newScheduledThreadPool(...)
Свингоый Timer, по идее, тоже не нужен, т.к. он запускает события в EDT. А нам нужен фоновый процесс.
Ну, и придется, вероятно, с SwingUtilities подружиться.
...
Рейтинг: 0 / 0
15.08.2012, 16:19:48
    #37918005
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскаэите, как в правильно организовать в ...
Шас начал читать про Кварк http://www.ibm.com/developerworks/ru/library/j-quartz/
Вещь действительно интересная, но больше для серверов и то при условии моцной задачи.
Но все равно интересно почитать.
А что имелось ввиду под:
Ну, и придется, вероятно, с SwingUtilities подружиться. ?
...
Рейтинг: 0 / 0
15.08.2012, 16:23:06
    #37918009
mesier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскаэите, как в правильно организовать в ...
А в качестве десктопного приложения у нас чего? Swing? Если да, то:
1. Поток с блокирующим методом, ждущем данных на сокете.
2. Кастомное событие (event).
3. Кастомный листенер в EDT, ждущий event.
Поток, получивший данные из сокета, посылает event в EDT (FireEvent). Данные, можно вместе с event-ом отправить. Либо сложить в какой-то объект, но тогда необходимо продумывать синхронизацию доступа к объекту из двух потоков (типичная задача producer-consumer). Отправив event, поток снова встает на блокирующем методе ReadSoket (или как его там ?? давно с сокетами не работал..)
...
Рейтинг: 0 / 0
15.08.2012, 16:26:05
    #37918014
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскаэите, как в правильно организовать в ...
HunterNomadНу, и придется, вероятно, с SwingUtilities подружиться. ?
Если не искпользовать SwingWorker, то для того чтобы обновлять UI из фоновых потоков нужно использовать
SwingUtilities.invokeAndWait() и SwingUtilities.invokeLater(). Иначе вылезут артефакты и неадекватные исключения.
...
Рейтинг: 0 / 0
15.08.2012, 16:39:51
    #37918043
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскаэите, как в правильно организовать в ...
BlazkowiczHunterNomadпропущено...
?
Если не искпользовать SwingWorker, то для того чтобы обновлять UI из фоновых потоков нужно использовать
SwingUtilities.invokeAndWait() и SwingUtilities.invokeLater(). Иначе вылезут артефакты и неадекватные исключения.

Понял, спасибо.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Подскаэите, как в правильно организовать в ... / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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