gpt4 book ai didi

java - 如何清理 Java 中打开的进程?

转载 作者:行者123 更新时间:2023-11-29 04:04:43 25 4
gpt4 key购买 nike

我正在从 Java 程序启动一个进程。我捕获它,在程序的稍后位置我可能会向它发送一些信号(不像在 UNIX 信号中——一种不同的机制)告诉它清理自己并关闭,这是终止这个过程的正确方法。稍后我可能会重新启动并保持该过程并再次停止它任意次数。

我希望我的程序在存在时向进程发出终止信号并确保它存在。否则,由于 Java 异步启动进程,它会在我的程序终止后持续存在并继续运行。

我以为我会在包含 Process 变量的对象的析构函数中执行此操作,但似乎 Java 没有析构函数。它有一个用于释放通过 JNI 分配的内存的 finalize() 方法,但事实并非如此,显然您不能保证 finalize() 会被调用:它仅在对象被垃圾回收时调用,并且程序可能会在不调用垃圾收集的情况下运行到终止,在这种情况下,所有内容都会立即释放,并且不会发生垃圾收集和 finalize()。

确保在我的程序退出时首先调用此清理代码的最佳方法是什么?

我看到 Java 1.6 引入了 Runtime.addShutdownHook() 方法,但我目前卡在 Java 1.5 上。

最佳答案

Try/finally 是最接近 C++ 析构函数的。

Process process;

process = ....;

try
{
// do work
}
finally
{
// send info to process to shut it down
}

此外,addShutdownHook was added in 1.3 ...

关于java - 如何清理 Java 中打开的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/727151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com