假设我有一个对象“A”,它在其构造函数中启动一些进程。一旦对象被释放(设置为 null 或超出其生命范围),我需要调用清理方法。
问题在于 java 没有析构函数,并且不能保证所谓的“finalize”方法在对象设置为 null 或超出范围后立即运行。仅当 GC 认为“时机已到”时。
此外,我无法使用关闭 Hook ,因为我的代码在 Java EE 服务器上运行,而不是一个会立即运行和终止的简单 Java SE 应用程序。这种情况该怎么办?
最佳答案
您不应该在 Java EE 容器中创建自己的线程,也不要尝试终止它们,因为这已被弃用,并且会严重破坏您的虚拟机/Java EE 容器。
看一下 CommonJ JSR 237,它允许在 Java EE 容器中创建后台工作人员: http://docs.oracle.com/cd/E13222_01/wls/docs92/commonj/commonj.html
您可以使用 ServletContextListener 控制 Java EE 应用程序的启动和关闭:http://www.roseindia.net/servlets/ServletContextListener-example.shtml .
关于jakarta-ee - Java,如何在对象销毁时终止进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9905815/