从命令行执行 java 应用程序时如何限制最大执行时间,如下所示:
java -Xmx10G -cp /weka/weka.jar weka.classifiers.trees.J48 -t /test/test-vector.arff -d /test/test.model
最佳答案
我不相信 Java 中有任何内置的东西可以为您做这件事。选项:
- 编写一个包装器类来启动原始类,但还创建一个计时器线程以在当前进程未及时完成时将其终止。
- 使用操作系统功能
作为后者的一个例子,在类 Unix 系统上的 bash 中你可以使用 ulimit -t [seconds]
在开始该过程之前。
编辑:如评论中所述,目前尚不清楚这种使用 ulimit 的关闭有多优雅 - 线程是否会以足够礼貌的方式被杀死以允许 finally block 执行等。这可能值得测试。
编辑:再一次根据评论,ulimit 限制了 CPU 时间,而不是总时间。这可能是也可能不是您想要的 - 这取决于您的进程是否受 CPU 限制。
关于java - 如何从命令行限制 Java 应用程序的最大执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7937427/