Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 如何知道特定流程何时被卡住?_Java_Process - Fatal编程技术网

Java 如何知道特定流程何时被卡住?

Java 如何知道特定流程何时被卡住?,java,process,Java,Process,有没有办法知道某个特定进程在Java中何时“卡住”了 我正在从java程序运行一个外部应用程序。有时,此应用程序会挂起。我想知道这个应用程序什么时候停止工作,这样我就可以从我的代码中删除它。我正在考虑从代码中的不同线程进行某种类型的监视 有什么问题吗?我的第一个问题是问你所说的“卡住”是什么意思。它是在一个无限循环中吗?是僵局吗 根据问题的性质,我猜您不知道,但是如果您只想在它挂起时杀死它,您可以让它定期向文件写入一些输出。另一个进程可以监视此文件,如果经过了一些时间段而没有看到输出,则可以终止

有没有办法知道某个特定进程在Java中何时“卡住”了

我正在从java程序运行一个外部应用程序。有时,此应用程序会挂起。我想知道这个应用程序什么时候停止工作,这样我就可以从我的代码中删除它。我正在考虑从代码中的不同线程进行某种类型的监视


有什么问题吗?

我的第一个问题是问你所说的“卡住”是什么意思。它是在一个无限循环中吗?是僵局吗


根据问题的性质,我猜您不知道,但是如果您只想在它挂起时杀死它,您可以让它定期向文件写入一些输出。另一个进程可以监视此文件,如果经过了一些时间段而没有看到输出,则可以终止它。

我的第一个问题是问“卡住”是什么意思。它是在一个无限循环中吗?是僵局吗


根据问题的性质,我猜您不知道,但是如果您只想在它挂起时杀死它,您可以让它定期向文件写入一些输出。另一个进程可以监视此文件,如果某个时间段没有看到输出,则可以将其杀死。

如果另一个应用程序也是java,则可以使用java服务包装器监视并在挂起时重新启动它


如果另一个应用程序也是java,您可以使用java服务包装器来监视它,并在它挂起时重新启动它



在java 6下,您可以获得所有线程的线程转储。如果你每分钟都拍下这些照片,你就能看到发生了什么

在java 6下,您可以获得所有线程的线程转储。如果你每分钟都拍下这些照片,你就能看到发生了什么

你对“挂”的意思有严格的定义吗?你怎么区分它是挂着还是真的很慢?我真的不太清楚。此应用程序是开发人员构建的,因此挂起很常见。我在考虑监控流程的状态。类似于windows任务管理器中状态为“未响应”时的情况。不过我也需要它在Mac上工作。布兰科:该死,误读了你的问题。。。这完全取决于外部应用程序和Java程序之间的I/O发生方式。我启动外部应用程序,但我总是为IPC使用临时文件(因为消费流太混乱,容易被锁定:相信我,我在比大多数Java程序员更多的操作系统上运行了更多的外部应用程序:)我将所有外部应用程序包装在“nohup app…&”调用中,返回PID和“kill-9”(这保证了在Unx上,当Java应用程序变得不“正常”时,从Java释放*应用程序的所有资源)外部应用程序的输出。您对“挂起”的含义有严格的定义吗?您如何区分挂起和非常慢之间的区别?我实际上不太清楚。此应用程序是开发版本,因此挂起很常见。我在考虑监视进程的状态。类似于在windows ta中时的情况sk manager状态为“无响应”。但我也需要它在Mac中工作。布兰科:该死,误读了你的问题…这一切都取决于你的外部应用程序和Java程序之间的I/O发生方式。我启动外部应用程序,但我总是使用临时文件来进行IPC(因为消费流太凌乱和容易锁定:相信我,我在更多操作系统上运行的外部应用比大多数Java程序员都多:)我将所有外部应用包装在“nohup app…&”调用中,从Java获取PID和“kill-9”(这保证在Unx上释放*应用程序的所有资源),而Java应用程序没有得到响应“正常"外部应用程序的输出。听起来是个不错的解决方案,但是,我无法修改正在运行的应用程序,因为我无法访问其代码。鉴于您无法修改应用程序,并且不知道应用程序如何与世界其他地方交互,或者您如何知道它已挂起,我不相信这个问题是可以回答的。谢谢r你的回答danben.我在想,也许有一种方法可以从Java中了解操作系统中进程的状态。你可以监视应用程序的CPU活动,如果CPU长时间接近零,就杀死它(假设它挂起时,CPU会下降)@卡洛斯·布兰科:在Un*x上,你至少可以通过编程检测一些状态,比如“僵尸”一个…听起来是个不错的解决方案,但是,我不能修改正在运行的应用程序,因为我无法访问它的代码。考虑到你不能修改应用程序,并且不知道应用程序如何与世界其他地方交互,或者你如何知道它已挂起,我不相信这个问题是可以回答的。谢谢你的回答danben。我在想,也许有一种方法可以从Java中了解操作系统中进程的状态。你可以监控应用程序的CPU活动,如果CPU长时间接近零,就杀死它(假设它挂起时CPU会下降)@Carlos Blanco:在Un*x上,你至少可以通过编程方式检测某些状态,比如“僵尸”状态。。。