我正在开发一个 Java 程序,它启动一个子进程,通过标准输出接收数据并执行一些计算,这个过程会重复。我在一台超级计算机上运行这个程序,它使用与 Torque 相关的 PBS,它具有一些特殊的调度功能,可以定期挂起作业,以最大限度地提高系统利用率。
我在执行过程中遇到的一个问题是我的子进程神秘地挂起(原因目前未知),导致 Java 等待永远不会到达的响应。我想做的是监视这个进程并强制执行时间截止,即,如果进程运行了不寻常的时间,则死亡并抛出某种错误,让我知道发生了这种情况。
通常,我会使用 Apache commons exec watchdog 来执行此操作。但我担心这项工作暂停的任何时间都会导致这个截止(假设它使用开始和结束 System.currentTimeMillis() 之间的差异)。Apache commons exec watchdog 会因此受到影响吗?有没有办法在经过时间计算中排除任何暂停时间?