|
|
|
callable & context
|
|||
|---|---|---|---|
|
#18+
Всем привет, Есть потоковые задачи которые выполняет executorService. Необходимо следить за прогрессом вылолнения этих задач, типа статут, и статистика - % выполнения, ошибки и т.д. Можно передавать context в эту потоковую задачу(которая должна обновлять его) и трекать прогресс через этот context. Можно передавать callable в потоковую задачу и получать назад обновления прогресса. Хотелось бы улышать мнения какой их эти способов предпочтительнее или хотя бы почему вы предпочитаете одно, а не другое. П.С. вариант трекания через БД не рассматриваю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2016, 18:36 |
|
||
|
callable & context
|
|||
|---|---|---|---|
|
#18+
diverM...Можно передавать context в эту потоковую задачу(которая должна обновлять его) и трекать прогресс через этот context.... И как понимать, что context изменился? IMHO все равно какой-то callback нужен и/или таймер. В общем, лично я принципиальной разницы между этими двумя вариантами (контекст, коллбак) не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2016, 18:39 |
|
||
|
callable & context
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevВ общем, лично я принципиальной разницы между этими двумя вариантами (контекст, коллбак) не вижу. Аналогично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2016, 18:42 |
|
||
|
callable & context
|
|||
|---|---|---|---|
|
#18+
diverM, Можно ещё обозвать Listener, или Observer. Но принципиально, ведь, ничего не поменяется. Единственная альтернатива, которая приходит на ум это побить задачи на более мелкие, и тогда прогресс и ошибки отслеживать уже внутри ExecutorService, не напрягая этой ерундой сами задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2016, 18:45 |
|
||
|
callable & context
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevИ как понимать, что context изменился? context сохранен в какой-то мапе и мы обращаемся к нему когда надо определить текущий прогресс. например по пользовательскому запосу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2016, 18:45 |
|
||
|
callable & context
|
|||
|---|---|---|---|
|
#18+
У меня иногда получается некий промежуточный "context" как агригатор callback'ов. Т.е., если например говорить о ProgressBar Рисовальщик progress bar -- состояние прогресс бара (проценты) --- рабочий процесс(ы) 1) Рабочие процессы обновляют (или callback'чит ) состояние, например после обработки одной или N записи (при этом callback'и могут идти очень часто) 2) Состояние делает callback в рисовальщик, раз в секунду или когда изменилось кол-во процентов. Т.е. намного режи. 3) Рисовальшик отрисовывает новое состояние ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2016, 18:48 |
|
||
|
callable & context
|
|||
|---|---|---|---|
|
#18+
diverMcontext сохранен в какой-то мапе и мы обращаемся к нему когда надо определить текущий прогресс. например по пользовательскому запосу. Да ради бога. Просто как Вы будете менять состояние / обновлять его? Скорее всего вызовом метода вида: synchronized void setProgress( int new_progress ); от callback'а это будет отличаться только названием метода. IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2016, 18:51 |
|
||
|
callable & context
|
|||
|---|---|---|---|
|
#18+
BlazkowiczdiverM, Единственная альтернатива, которая приходит на ум это побить задачи на более мелкие, и тогда прогресс и ошибки отслеживать уже внутри ExecutorService, не напрягая этой ерундой сами задачи. Имеется ввиду что эти более мелкие задачи атомарны и уже не могут сами влиять на прогресс? Если нет, то тогда возврат к исходной задаче о получении прогресса из более мелкой задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2016, 18:58 |
|
||
|
callable & context
|
|||
|---|---|---|---|
|
#18+
diverMИмеется ввиду что эти более мелкие задачи атомарны и уже не могут сами влиять на прогресс? Если нет, то тогда возврат к исходной задаче о получении прогресса из более мелкой задачи. Не очень понял формулировку. Но суть в том что каждая задача как бы обновляет прогресс 1 единственный раз только при успешном выполнении. В результате ExecutorService может формировать прогресс подсчитывая успешность задач. Но без конкретики тут трудно решить можно ли так сделать. Контекст плох наличием зависимости от этого контекста. Callback это тоже самое, с немного меньшим coupling. А, так, что в лоб, что по лбу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2016, 19:18 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39199019&tid=2124244]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 341ms |

| 0 / 0 |
