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

标签 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 中你可以使用 ulimit -t [seconds]在开始该过程之前。

编辑:如评论中所述,目前尚不清楚这种使用 ulimit 的关闭有多优雅 - 线程是否会以足够礼貌的方式被杀死以允许 finally block 执行等。这可能值得测试。

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

关于java - 如何从命令行限制 Java 应用程序的最大执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7937427/

相关文章:

java - 如何在eclipse项目aosp android中解析so文件映射

Java序列化: static variables not serializable: workaround

java - 我想在 JOptionPane 中显示 for 循环的输出

Mysql select 查询次数直到达到条件

facebook - Facebook 共享器中的描述最大限制

ruby-on-rails - rails + mongoid : limit fields using only keyword

java - java中发生异常时如何避免程序终止

java - 如何将 SharedPreferences 存储到文件中?

python - 克服 python 中的 appengine 500 字节字符串限制?考虑文本

mysql - 为什么 MYSQL 较高的 LIMIT 偏移量会减慢查询速度?