2016-08-23 6 views
0

Ich versuche, ein Skript mit PowerShell zu tun, und ich muss einige Java-Code in einer Schleife ausführen. So tue ich:Ausführen von Java-Anwendung mit einem Timeout

while(something){ 
    java my_program 
} 

Aber my_program braucht Zeit, und ich möchte ein Timeout setzen. Wie kann ich das machen?

Antwort

0

Man könnte so etwas wie dies versuchen:

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

Bitte erläutern Sie Ihren Code. Dies ist im Grunde ein Code-Dump. –

+0

@rabbitguy Ich thnk, dass dieser Code keine Erklärungen benötigt ... Allerdings. Es startet die Java-Anwendung in einem neuen Prozess und weist den Prozess $ p zu. Dann wartet es 1000 Millisekunden für den Abschluss des Prozesses und tötet es, wenn es nicht innerhalb dieser Zeit abgeschlossen ist ... –

+0

Warum $ p = diagnostics.process] :: start ("C:/etc .../java.exe "," package/my_programm "funktioniert nicht? – 77140B

0

ich diesen Code denken wird für Sie funktionieren, Sie while-Schleife Zustand setzen,

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 

Ich hoffe, das hilft ..

Verwandte Themen