|
|
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
Есть цикл от 1 до N Некоторые шаги посылают запрос на сервер и по ответу, надо сделать действия. Те которые не посылают, либо по-умолчанию либо ничего. Очередность ответов разная - 5 может придти быстрее чем 2 образно говоря. Вопрос - как узнать, что пришли все ответы и дальше вызвать нужный метод обработки данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 10:14:19 |
|
||
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
-=Koba=-Есть цикл от 1 до N Некоторые шаги посылают запрос на сервер и по ответу, надо сделать действия. Те которые не посылают, либо по-умолчанию либо ничего. Очередность ответов разная - 5 может придти быстрее чем 2 образно говоря. Вопрос - как узнать, что пришли все ответы и дальше вызвать нужный метод обработки данных Цикл тут for, но могут быть совершенно разные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 10:15:12 |
|
||
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
Ну, накапливать ответы в буфер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 10:35:55 |
|
||
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНу, накапливать ответы в буфер. И сколько копить их? И как узнать, что все накопилось? Образно Код: java 1. 2. Можно конечно анализ проводить в самом ответе, но... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 10:44:33 |
|
||
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
Приблизительно вот так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 10:51:21 |
|
||
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПриблизительно вот так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Ок идея понятна, спасибо сейчас опробую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 10:59:37 |
|
||
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
только там = лишнее. должно быть просто < ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 11:00:31 |
|
||
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
И со скобками я промазал. notifyAll должен быть внутри synchronized блока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 11:02:04 |
|
||
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
Зачем wait/notify? Есть же CyclicBarrier ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 13:00:06 |
|
||
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
Еще есть CountDownLatch . Может он лучше подойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 13:04:03 |
|
||
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
fixxerЗачем wait/notify? Есть же CyclicBarrier Не могу представить как его здесь прикрутить, да ещё и при условии, что кол-во асинхронных задач может быть меньше чем итераций в цикле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 13:05:33 |
|
||
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
Если нет требования обрабатывать результат в том же потоке, который инициирует цикл, то можно вообще через атомарный счетчик разрулить, так будет даже проще. Проблема только в том, чтобы дождаться конца цикла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 13:09:32 |
|
||
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
BlazkowiczfixxerЗачем wait/notify? Есть же CyclicBarrier Не могу представить как его здесь прикрутить, да ещё и при условии, что кол-во асинхронных задач может быть меньше чем итераций в цикле. Да, скорее CountDownLatch подойдет Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 13:27:12 |
|
||
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
fixxerДа, скорее CountDownLatch подойдет Из постановки задачи N заранее не извесно: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Хотя это решается проходом в два раза, но всё же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 13:35:41 |
|
||
|
Цикл и асинхронные запросы
|
|||
|---|---|---|---|
|
#18+
BlazkowiczfixxerДа, скорее CountDownLatch подойдет Из постановки задачи N заранее не извесно: Хотя это решается проходом в два раза, но всё же. Известно максимальное значение N, этого достаточно. Если асинхронного запроса не нужно для шага, сразу делаем countDown(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 14:08:46 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37883191&tid=2131343]: |
0ms |
get settings: |
15ms |
get forum list: |
22ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
53ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 308ms |
| total: | 510ms |

| 0 / 0 |
