Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / callable & context / 9 сообщений из 9, страница 1 из 1
23.03.2016, 18:36
    #39199015
diverM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
callable & context
Всем привет,
Есть потоковые задачи которые выполняет executorService. Необходимо следить за прогрессом вылолнения этих задач, типа статут, и статистика - % выполнения, ошибки и т.д.
Можно передавать context в эту потоковую задачу(которая должна обновлять его) и трекать прогресс через этот context.
Можно передавать callable в потоковую задачу и получать назад обновления прогресса.
Хотелось бы улышать мнения какой их эти способов предпочтительнее или хотя бы почему вы предпочитаете одно, а не другое.

П.С. вариант трекания через БД не рассматриваю.
...
Рейтинг: 0 / 0
23.03.2016, 18:39
    #39199019
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
callable & context
diverM...Можно передавать context в эту потоковую задачу(которая должна обновлять его) и трекать прогресс через этот context....
И как понимать, что context изменился?

IMHO все равно какой-то callback нужен и/или таймер.

В общем, лично я принципиальной разницы между этими двумя вариантами (контекст, коллбак) не вижу.
...
Рейтинг: 0 / 0
23.03.2016, 18:42
    #39199020
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
callable & context
Leonid KudryavtsevВ общем, лично я принципиальной разницы между этими двумя вариантами (контекст, коллбак) не вижу.
Аналогично.
...
Рейтинг: 0 / 0
23.03.2016, 18:45
    #39199021
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
callable & context
diverM,

Можно ещё обозвать Listener, или Observer. Но принципиально, ведь, ничего не поменяется.

Единственная альтернатива, которая приходит на ум это побить задачи на более мелкие, и тогда прогресс и ошибки отслеживать уже внутри ExecutorService, не напрягая этой ерундой сами задачи.
...
Рейтинг: 0 / 0
23.03.2016, 18:45
    #39199022
diverM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
callable & context
Leonid KudryavtsevИ как понимать, что context изменился?

context сохранен в какой-то мапе и мы обращаемся к нему когда надо определить текущий прогресс. например по пользовательскому запосу.
...
Рейтинг: 0 / 0
23.03.2016, 18:48
    #39199026
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
callable & context
У меня иногда получается некий промежуточный "context" как агригатор callback'ов.

Т.е., если например говорить о ProgressBar

Рисовальщик progress bar -- состояние прогресс бара (проценты) --- рабочий процесс(ы)

1) Рабочие процессы обновляют (или callback'чит ) состояние, например после обработки одной или N записи (при этом callback'и могут идти очень часто)
2) Состояние делает callback в рисовальщик, раз в секунду или когда изменилось кол-во процентов. Т.е. намного режи.
3) Рисовальшик отрисовывает новое состояние
...
Рейтинг: 0 / 0
23.03.2016, 18:51
    #39199031
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
callable & context
diverMcontext сохранен в какой-то мапе и мы обращаемся к нему когда надо определить текущий прогресс. например по пользовательскому запосу.
Да ради бога.

Просто как Вы будете менять состояние / обновлять его?

Скорее всего вызовом метода вида:

synchronized void setProgress( int new_progress );

от callback'а это будет отличаться только названием метода. IMHO & AFAIK
...
Рейтинг: 0 / 0
23.03.2016, 18:58
    #39199042
diverM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
callable & context
BlazkowiczdiverM,
Единственная альтернатива, которая приходит на ум это побить задачи на более мелкие, и тогда прогресс и ошибки отслеживать уже внутри ExecutorService, не напрягая этой ерундой сами задачи.
Имеется ввиду что эти более мелкие задачи атомарны и уже не могут сами влиять на прогресс? Если нет, то тогда возврат к исходной задаче о получении прогресса из более мелкой задачи.
...
Рейтинг: 0 / 0
23.03.2016, 19:18
    #39199058
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
callable & context
diverMИмеется ввиду что эти более мелкие задачи атомарны и уже не могут сами влиять на прогресс? Если нет, то тогда возврат к исходной задаче о получении прогресса из более мелкой задачи.
Не очень понял формулировку. Но суть в том что каждая задача как бы обновляет прогресс 1 единственный раз только при успешном выполнении. В результате ExecutorService может формировать прогресс подсчитывая успешность задач.

Но без конкретики тут трудно решить можно ли так сделать.
Контекст плох наличием зависимости от этого контекста.
Callback это тоже самое, с немного меньшим coupling. А, так, что в лоб, что по лбу.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / callable & context / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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