【问题标题】:Execute Java application using a timeout [duplicate]使用超时执行 Java 应用程序 [重复]
【发布时间】:2016-08-23 12:21:41
【问题描述】:

我正在尝试使用 PowerShell 编写脚本,我需要在循环中执行一些 Java 代码。所以我这样做了:

while(something){
     java my_program
}

但是my_program 需要时间,我想设置一个超时。我怎样才能做到这一点?

【问题讨论】:

    标签: java powershell timeout


    【解决方案1】:

    你可以试试这样的:

    while($something){
        $p = [diagnostics.process]::start("java my_program")
        if ( ! $p.WaitForExit(1000) ) 
        {
            $p.kill()
        }
    }
    

    【讨论】:

    • 请解释您的代码。这基本上是一个代码转储。
    • @rabbitguy 我认为这段代码不需要任何解释......但是。它在一个新进程中启动一个 java 应用程序并将该进程分配给$p。然后它等待 1000 毫秒让进程完成,如果在这段时间内没有完成,则将其杀死......
    • 为什么 $p = diagnostics.process]::start("C:/etc.../java.exe","package/my_programm" 不起作用?
    【解决方案2】:

    我认为这段代码适合你,你可以把while循环条件,

    public class JavaTimeout {
    
        public void myMethod(){
    
            long startTime = System.currentTimeMillis(); // put the start time
    
            while((System.currentTimeMillis() - startTime ) < 5000) // if if 5 second end
            {
                // your method do something here 
            }
            System.out.println("5 sec end..."); // print the timeout
    
        } // end myMethod method
    
    } // end JavaTimeout Class
    

    希望对你有帮助..

    【讨论】:

      猜你喜欢
      • 2017-07-31
      • 2011-10-04
      • 2013-09-09
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 2013-03-10
      • 2017-06-29
      相关资源
      最近更新 更多