|
|
|
Подскаэите, как в правильно организовать в ...
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Есть десктопное приложение. Ему необходимо, периодически, в фоне проводить соединение по сокету и передавать некие данные на сервер по сокету. Клиент-сервер есть. Собственно десктопное приложение тоже есть. А вот как правильно организовать фоновую задачу - вошел в стопор и все ... Я думаю написать класс extends от Thread или implements от Runnable. В нем бесконечный while (true) и уже в этом цикле организовать прием данных с сервера. И, если принял данные, то предал в десктопное приложение и все в гуд. Поправьте, если ход моих мыслей не тот. За ранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 15:48:10 |
|
||
|
Подскаэите, как в правильно организовать в ...
|
|||
|---|---|---|---|
|
#18+
Ну, правильный ход мыслей. Но лучше сразу Executors подключить. Есть ещё SwingWorker он сразу с EDT ещё и синхронизирует. Просто не понятна конкретика. Любое общение с сервере на GUI нужно делать фоновым потоком, чтобы не тормозить EDT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 15:58:06 |
|
||
|
Подскаэите, как в правильно организовать в ...
|
|||
|---|---|---|---|
|
#18+
Если есть слово периодически - то в яве есть таймеры - спец. классы как раз для работы в отдельном потоке. А также можно их пушки по воробьям - Quartz - умеет гораздо больше как говорят, ставят даже на сервера приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 15:58:26 |
|
||
|
Подскаэите, как в правильно организовать в ...
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНу, правильный ход мыслей. Но лучше сразу Executors подключить. Есть ещё SwingWorker он сразу с EDT ещё и синхронизирует. Просто не понятна конкретика. Любое общение с сервере на GUI нужно делать фоновым потоком, чтобы не тормозить EDT. Ага, понял, попробую. oneHalf Если есть слово периодически - то в яве есть таймеры - спец. классы как раз для работы в отдельном потоке. А также можно их пушки по воробьям - Quartz - умеет гораздо больше как говорят, ставят даже на сервера приложений. . С Quartz никогда не сталкивался. А за таймеры даже забыл - стопор. Спасибо всем!!! И удачных удач!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 16:08:20 |
|
||
|
Подскаэите, как в правильно организовать в ...
|
|||
|---|---|---|---|
|
#18+
HunterNomadС Quartz никогда не сталкивался. А за таймеры даже забыл - стопор. Спасибо всем!!! И удачных удач!!! С таймерами беда, что если будет непойманный эксепшн то тред умирает, пичалька, юзайте Executors ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 16:10:39 |
|
||
|
Подскаэите, как в правильно организовать в ...
|
|||
|---|---|---|---|
|
#18+
Нафиг кварц на клиенте? Executors.newScheduledThreadPool(...) Свингоый Timer, по идее, тоже не нужен, т.к. он запускает события в EDT. А нам нужен фоновый процесс. Ну, и придется, вероятно, с SwingUtilities подружиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 16:11:02 |
|
||
|
Подскаэите, как в правильно организовать в ...
|
|||
|---|---|---|---|
|
#18+
Шас начал читать про Кварк http://www.ibm.com/developerworks/ru/library/j-quartz/ Вещь действительно интересная, но больше для серверов и то при условии моцной задачи. Но все равно интересно почитать. А что имелось ввиду под: Ну, и придется, вероятно, с SwingUtilities подружиться. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 16:19:48 |
|
||
|
Подскаэите, как в правильно организовать в ...
|
|||
|---|---|---|---|
|
#18+
А в качестве десктопного приложения у нас чего? Swing? Если да, то: 1. Поток с блокирующим методом, ждущем данных на сокете. 2. Кастомное событие (event). 3. Кастомный листенер в EDT, ждущий event. Поток, получивший данные из сокета, посылает event в EDT (FireEvent). Данные, можно вместе с event-ом отправить. Либо сложить в какой-то объект, но тогда необходимо продумывать синхронизацию доступа к объекту из двух потоков (типичная задача producer-consumer). Отправив event, поток снова встает на блокирующем методе ReadSoket (или как его там ?? давно с сокетами не работал..) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 16:23:06 |
|
||
|
Подскаэите, как в правильно организовать в ...
|
|||
|---|---|---|---|
|
#18+
HunterNomadНу, и придется, вероятно, с SwingUtilities подружиться. ? Если не искпользовать SwingWorker, то для того чтобы обновлять UI из фоновых потоков нужно использовать SwingUtilities.invokeAndWait() и SwingUtilities.invokeLater(). Иначе вылезут артефакты и неадекватные исключения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 16:26:05 |
|
||
|
Подскаэите, как в правильно организовать в ...
|
|||
|---|---|---|---|
|
#18+
BlazkowiczHunterNomadпропущено... ? Если не искпользовать SwingWorker, то для того чтобы обновлять UI из фоновых потоков нужно использовать SwingUtilities.invokeAndWait() и SwingUtilities.invokeLater(). Иначе вылезут артефакты и неадекватные исключения. Понял, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 16:39:51 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37917964&tid=2131137]: |
0ms |
get settings: |
15ms |
get forum list: |
23ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
39ms |
get topic data: |
17ms |
get forum data: |
5ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 325ms |
| total: | 519ms |

| 0 / 0 |
