Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一种安全正确的方法可以使用Java语言在Windows中杀死进程树_Java_Multithreading_Process - Fatal编程技术网

是否有一种安全正确的方法可以使用Java语言在Windows中杀死进程树

是否有一种安全正确的方法可以使用Java语言在Windows中杀死进程树,java,multithreading,process,Java,Multithreading,Process,我的情况: 在我们的Java EE应用程序中有一个分析操作,该函数是通过使用Java.lang.Runtime执行批处理命令来实现的。最严重的问题是,此操作将花费很长时间,并且在执行过程中会遇到一些错误,然后整个进程树仍处于活动状态,这无疑会降低应用程序和服务器的性能。所以我想知道,任何人都可以提供一个安全和正确地解决这个问题的想法 我知道这是我们开发过程中的一个非常常见的问题,如果这里提供一个示例,我将不胜感激。如果您使用 Process p = Runtime.exec(""); 然后你可

我的情况:

在我们的Java EE应用程序中有一个分析操作,该函数是通过使用Java.lang.Runtime执行批处理命令来实现的。最严重的问题是,此操作将花费很长时间,并且在执行过程中会遇到一些错误,然后整个进程树仍处于活动状态,这无疑会降低应用程序和服务器的性能。所以我想知道,任何人都可以提供一个安全和正确地解决这个问题的想法


我知道这是我们开发过程中的一个非常常见的问题,如果这里提供一个示例,我将不胜感激。

如果您使用

Process p = Runtime.exec("");
然后你可以打电话给

p.destroy();

除此之外,我认为如果在执行过程中出现任何错误,您可以使批处理过程自行销毁,这将是非常棒的。有关更多详细信息,请参阅。

如果您使用

Process p = Runtime.exec("");
然后你可以打电话给

p.destroy();
除此之外,我认为如果在执行过程中出现任何错误,您可以使批处理过程自行销毁,这将是非常棒的。有关更多详细信息,请参阅

接口CommandLauncher包含几个返回进程的exec方法

但无论如何,您无法控制进程ID:这是操作系统的责任。此外,标准JavaAPI甚至不允许检索进程ID。在旧的java版本中有一个技巧:实现包含int字段pid的进程,可以使用反射检索该进程。但这在1.6版中有所更改。

请参见

接口CommandLauncher包含几个返回进程的exec方法


但无论如何,您无法控制进程ID:这是操作系统的责任。此外,标准JavaAPI甚至不允许检索进程ID。在旧的java版本中有一个技巧:实现包含int字段pid的进程,可以使用反射检索该进程。但这在1.6版中已更改。

非常感谢您的宝贵建议。非常感谢您的宝贵建议。非常感谢您的帮助。中国佬。非常感谢你的帮助。中国佬。