我正在开发创建新类加载器的应用程序,使用此类加载器加载类执行一些代码,然后将其抛出,启动另一个类加载器并执行相同的操作。我想收回所有内存并杀死使用类加载器时留下的所有线程。
我的问题是,如果这个类加载器加载的代码编写得不好(或者更不希望这样使用),它可能会留下一些线程。一个这样的库中的当前问题是有一个无法关闭的线程池,存储为最终的静态变量(shutdown()
检查这是否是存储在该变量中的默认'线程池并且如果失败则就是这样)。我知道如何修改最终变量,但是已经优化了变量查找的危险。
我甚至无法使用Thread.stop()
拍摄这些线程(我很好,在垂死的类加载器中加载了任何不一致的状态)因为线程池会重新创建这个线程。我不想使用反射重写关闭代码,我也不愿意将所有字段归零并希望它会崩溃。一般来说,我希望保持' hacks'至少。
我知道应用程序服务器取消部署应用程序存在问题 - 有什么好的解决方案吗?