如何清理Java中打开的Process?
我从一个Java程序开始一个过程。 我坚持下去,在程序的后面,我可能会发送一些信号(不像UNIX信号 - 一种不同的机制),告诉它清理和关闭,这是终止这个过程的正确方法。 我稍后可能会重新启动并保持该进程并再次停止任意次数。
当我的程序存在时,我想让程序指示终止并确保它存在。 否则,由于Java以异步方式启动进程,因此它会在程序终止后继续运行并继续运行。
我以为我会在析构函数中为包含Process变量的对象执行此操作,但似乎Java没有析构函数。 它有一个用于释放通过JNI分配的内存的finalize()方法,但这不是这种情况,显然你不能保证finalize()会被调用:它只在对象被垃圾收集时调用,而程序可能会运行终止而不会调用垃圾回收,在这种情况下,所有内容都会立即释放,并且不会发生垃圾回收,也不会发生finalize()。
什么是最好的方式来确保当我的程序退出这个清理代码首先被调用?
我看到Java 1.6引入了Runtime.addShutdownHook()方法,但我目前停留在Java 1.5上。
尝试/最后是最接近你会得到一个C ++析构函数。
Process process;
process = ....;
try
{
// do work
}
finally
{
// send info to process to shut it down
}
另外,addShutdownHook在1.3中添加...
为什么不在调用System.exit之前调用它? 你的代码可能应该是结构化的,所以你只能从一个地方调用System.exit(或者从main返回),无论哪种方式,这都是一个好的方法。
链接地址: http://www.djcxy.com/p/19911.html