我想在java环境中监控一个在外部库中使用的线程池。
可以在池对象上添加监视逻辑,比如在我自己的代码中定义的ExecuterService。但在许多情况下,库中声明的池是封装的,因此用户无法访问。我需要不断检查库池消耗的资源,以确保我的程序稳定。
我想要监控的特性是池的名称、大小、当前使用情况,如活动线程的数量等。
谢谢。
发布于 2018-10-15 23:23:31
你能做的就是创建一个定制的ThreadGroup,并创建你的线程的默认线程组。自定义线程组的优点是在创建或销毁线程时会收到通知,您可以获得创建线程的库的堆栈跟踪。
要直接监视ThreadPoolExecutor,您需要修改该类或使用插装将代码注入其中。
更容易将代码注入到库中,例如,通过反编译类,创建池并修改它。
另一种选择是可以通过反射获得ExecutorService。
https://stackoverflow.com/questions/52815774
复制相似问题