如何从命令行限制Java应用程序的最大执行时间
从命令行执行java应用程序时,如何限制最大执行时间,如下所示: java-Xmx10G-cp/weka/weka.jar weka.classifiers.trees.J48-t /test/test-vector.arff-d/test/test.model如何从命令行限制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中有任何东西可以为您做到这一点。选项:
- 编写一个包装类,该类启动原始类,但也创建一个计时器线程,以在当前进程未及时完成时终止它
- 使用操作系统功能
编辑:同样根据评论,ulimit限制CPU时间,而不是总的墙时间。这可能是您想要的,也可能不是您想要的——这取决于您的进程是否受CPU限制。我不相信Java中有任何东西可以为您做到这一点。选项:
- 编写一个包装类,该类启动原始类,但也创建一个计时器线程,以在当前进程未及时完成时终止它
- 使用操作系统功能
编辑:同样根据评论,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来限制你的时间。你已经有了一个库可以做到这一点,它在任何操作系统上都能以同样的方式工作,你不会无缘无故地混合和匹配多种语言。