Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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_Limit - Fatal编程技术网

如何从命令行限制Java应用程序的最大执行时间

如何从命令行限制Java应用程序的最大执行时间,java,limit,Java,Limit,从命令行执行java应用程序时,如何限制最大执行时间,如下所示: java-Xmx10G-cp/weka/weka.jar weka.classifiers.trees.J48-t /test/test-vector.arff-d/test/test.model 我不相信Java中有任何东西可以为您做到这一点。选项: 编写一个包装类,该类启动原始类,但也创建一个计时器线程,以在当前进程未及时完成时终止它 使用操作系统功能 作为后者的一个示例,在类Unix系统上的bash中,您可以在启动进程之

从命令行执行java应用程序时,如何限制最大执行时间,如下所示:

java-Xmx10G-cp/weka/weka.jar weka.classifiers.trees.J48-t /test/test-vector.arff-d/test/test.model


我不相信Java中有任何东西可以为您做到这一点。选项:

  • 编写一个包装类,该类启动原始类,但也创建一个计时器线程,以在当前进程未及时完成时终止它
  • 使用操作系统功能
作为后者的一个示例,在类Unix系统上的bash中,您可以在启动进程之前使用它

编辑:正如评论中所指出的,现在还不清楚使用ulimit进行这样的关闭会有多优雅——线程是否会以足够礼貌的方式被终止,以允许finally块执行等等。这可能是值得测试的


编辑:同样根据评论,ulimit限制CPU时间,而不是总的墙时间。这可能是您想要的,也可能不是您想要的——这取决于您的进程是否受CPU限制。

我不相信Java中有任何东西可以为您做到这一点。选项:

  • 编写一个包装类,该类启动原始类,但也创建一个计时器线程,以在当前进程未及时完成时终止它
  • 使用操作系统功能
作为后者的一个示例,在类Unix系统上的bash中,您可以在启动进程之前使用它

编辑:正如评论中所指出的,现在还不清楚使用ulimit进行这样的关闭会有多优雅——线程是否会以足够礼貌的方式被终止,以允许finally块执行等等。这可能是值得测试的


编辑:同样根据评论,ulimit限制CPU时间,而不是总的墙时间。这可能是您想要的,也可能不是您想要的-这取决于您的进程是否受CPU限制。

好的,您可以使用Java的调度程序,让它在一段时间后关闭应用程序:


好的,您可以使用Java的调度程序在一段时间后关闭应用程序:


使用ulimit可能会关闭应用程序,而不会给它正常关闭的机会。@AndreiBodnarescu:可能吧。我不知道它是否会首先尝试使用sigterm进行优雅的关闭,或者Java将如何处理。这是值得测试的……如果我没弄错的话,当您指定ulimit的时间限制时,该时间限制指的是CPU时间,而不是实际时间。@AndreiBodnarescu:没错。将再次编辑。这可能仍然是合适的,但OP需要做出决定。如果合适的话(如果他正在使用Linux等),这可能是最简单的方法。但如果不是,就不会:)对OP说:我不是在乞求投票,事实上,如果可能的话,请不要投票给我。但实际上,如果你用Java编写代码,就要用Java的方式来做,同时也要用Java来限制你的时间。您已经有了一个这样做的库,它在任何操作系统上都将以相同的方式工作,您不会无缘无故地混合和匹配多种语言。使用ulimit可能会关闭应用程序,而不会给它正常关闭的机会。@AndreiBodnarescu:可能。我不知道它是否会首先尝试使用sigterm进行优雅的关闭,或者Java将如何处理。这是值得测试的……如果我没弄错的话,当您指定ulimit的时间限制时,该时间限制指的是CPU时间,而不是实际时间。@AndreiBodnarescu:没错。将再次编辑。这可能仍然是合适的,但OP需要做出决定。如果合适的话(如果他正在使用Linux等),这可能是最简单的方法。但如果不是,就不会:)对OP说:我不是在乞求投票,事实上,如果可能的话,请不要投票给我。但实际上,如果你用Java编写代码,就要用Java的方式来做,同时也要用Java来限制你的时间。你已经有了一个库可以做到这一点,它在任何操作系统上都能以同样的方式工作,你不会无缘无故地混合和匹配多种语言。