мониторинг состояния пула потоков во внешней библиотеке - PullRequest
0 голосов
/ 15 октября 2018

Я хочу отслеживать пул потоков, который используется во внешней библиотеке в среде Java.

Можно добавить логику мониторинга в объект пула, такой как ExecuterService, определенный в моем собственном коде.Но во многих случаях объявленные в библиотеках пулы инкапсулированы, поэтому пользователи не могут получить доступМне нужно постоянно проверять ресурсы, используемые библиотечными пулами, чтобы сделать мою программу стабильной.

Функции, которые я хочу отслеживать, включают имя пула, размер, текущее использование, например количество активных потоков и т. Д.

Спасибо.

1 Ответ

0 голосов
/ 15 октября 2018

Что вы можете сделать, это создать пользовательскую группу нитей и создать эту группу потоков по умолчанию для ваших потоков.Преимущество пользовательской группы потоков состоит в том, что она получает уведомление при создании или уничтожении потока, и вы можете получить трассировку стека библиотеки, создающей поток.

Для непосредственного мониторинга ThreadPoolExecutor вам необходимо изменить этот классили используйте инструментарий для внедрения в него кода.

Скорее проще внедрить код в библиотеку, например, путем декомпиляции класса, создавая пул и модифицируя его.

Другой вариант - этоможет быть возможно получить ExecutorService через отражение.

...