|
Таймер в потоке
|
|||
---|---|---|---|
#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. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2020, 18:30 |
|
Таймер в потоке
|
|||
---|---|---|---|
#18+
необходим еще один поток, который будет проверять, выполняется ли поток Это сложный и философский вопрос. Вот если представить что есть процесс ОС Linux и он в течение 5 минут не пишет и не читает диск. То можно ли считать что он выполняется? Или не выполняется? Скорее всего без понимания архитектуры того процесса который мы хотим мониторить, ответить на этот вопрос невозможно. Что происходить внутри Код: java 1.
? Там есть какой-то сердечный ритм? Heart-beat? Там есть какая-то диаграмма переходов из состояния в состояние? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2020, 18:46 |
|
Таймер в потоке
|
|||
---|---|---|---|
#18+
mayton, по сути, в completeTask будет ответ от шедулера линукса о том, что процесс завершен. и в этот момент необходимо закрыть поток с таймером. также таймер должен срабатывать раз в n кол-во времени и проверять, пришел ответ (закончился процесс) или нет ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2020, 19:03 |
|
Таймер в потоке
|
|||
---|---|---|---|
#18+
В коде что ты написал нет по сути никакого мониторинга. Из полезного там - логгирование. Может быть тебе нужно нечто вроде Код: java 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2020, 19:07 |
|
Таймер в потоке
|
|||
---|---|---|---|
#18+
extra_dj Код: java 1.
Персонально для вас в классе Process Java8 появился waitFor с таймаутом. P.S. Специально сделал ссылку на доку Java11, поскольку это модуляризированная LTS-версия, а в Java9 появились разные плюшки и усовершенствования типа ProcessHandel. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2020, 19:21 |
|
Таймер в потоке
|
|||
---|---|---|---|
#18+
mayton, нет. в completeTask будет выполнятся процесс. можно смоделировать, что когда появится 8, надо останавливать поток, писать лог. а до этого проверять все остальные цифры. это если приблизить ситуацию к более реальной ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2020, 19:32 |
|
Таймер в потоке
|
|||
---|---|---|---|
#18+
extra_dj mayton, нет. в completeTask будет выполнятся процесс. можно смоделировать, что когда появится 8, надо останавливать поток, писать лог. а до этого проверять все остальные цифры. это если приблизить ситуацию к более реальной Ты путаешь понятия процесс и поток. Это напрягает. Если java-thread - то это один подход. Примитивы java. Если это кастомный процесс операционки который ты запустил из java-runtime - то это скорее всего будет другой подход и другой смысл. Более того он - не в нашей власти и даже остановить его с гарантией мы не сможем. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2020, 19:41 |
|
Таймер в потоке
|
|||
---|---|---|---|
#18+
Пардон, попутал процессы и потоки (у кого что болит), но за sleep всё равно надо отстреливать - join(таймаут) к любому потоку из контролируемого набора и проверять по выходу весь набор. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2020, 19:49 |
|
Таймер в потоке
|
|||
---|---|---|---|
#18+
mayton, ок, тогда еще раз. я запускаю поток, в котором выполняется процесс( действие) - в моем случае это запуск скрипта sql. мне надо чекать, считается он или нет. если скрипт отработал, через линуксовский шедулер приходит ответ, что скрипт завершен (реализация уже есть). вот в это время мне необходимо дергать метод completeTask и проверить - идет расчет или нет и отправлять в лог сообщение типа идет/не идет и время, которое прошло от начала. в том примере, что я скинул - просто смоделировал такую ситуацию. надо проверить, появилась ли восьмеркаю а до этого отправлять лог, что идет цикл. возможно я неправильно определил понятие процесс ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2020, 20:18 |
|
|
start [/forum/topic.php?fid=59&msg=39952056&tid=2120823]: |
0ms |
get settings: |
4ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
69ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
154ms |
get tp. blocked users: |
1ms |
others: | 318ms |
total: | 557ms |
0 / 0 |