监视外部库中的线程池状态

时间:2018-10-15 11:28:53

标签: java jvm threadpool monitoring

我想监视在Java环境中的外部库中使用的线程池。

可以在我自己的代码中定义的像ExecuterService这样的池对象上添加监视逻辑。 但是在许多情况下,库中声明的池是封装的,因此用户无法访问。 我需要不断检查库池消耗的资源,以使程序稳定。

我要监视的功能是池的名称,大小,当前使用情况(例如活动线程数等)。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以做的是创建一个自定义ThreadGroup,并使该默认线程组成为您的线程。自定义线程组的优点是,在创建或销毁线程时会通知它,并且您可以获取创建线程的库的堆栈跟踪。

要直接监视ThreadPoolExecutor,您需要修改此类或使用工具将代码注入其中。

将代码注入库中的可能性更大,例如通过反编译创建池并修改它的类。

另一个选择是可以通过反射获取ExecutorService。