В общем случае один поток может только проверить, жив ли другой, вызвав isAlive()
.
Однако многие потоки могут быть "живыми", но в состоянии, в котором они не находятся. не делаю ничего полезного. Чтобы обнаружить это, вам нужно, чтобы поток регулярно публиковал sh обновления о своей деятельности. Затем поток мониторинга может определить, не ожидается ли ожидаемая активность.
Например, пакетный процесс может обновлять общий счетчик каждый раз, когда обрабатывает запись. Другой поток может считывать этот счетчик, и если он не увеличивается в течение некоторого времени, предположим, что процесс завис.
В производственных системах обычное решение состоит в том, чтобы оснастить ваш процесс вызовами в библиотеку метрик. Библиотека сделает эту информацию доступной для сборщика базы данных временных рядов. Системы оповещения и визуализации будут использовать данные из базы данных временных рядов для отправки предупреждений или отображения графиков.
Рекомендации по программному обеспечению не соответствуют действительности c, но одним экземпляром этого стека будет Микрометр для сбора метрик, Прометей для сбора и хранения их и Графана для их отображения.