[英]How to run a Java program multiple times without JVM exiting?
假設我有一個Java程序Test.class
,如果我使用下面的腳本
for i in 1..10
do
java Test
done
每次調用java Test
時JVM都會退出。
我想要的是多次運行java Test
而不退出JVM,因此,先前運行中的優化方法可以在以后的運行中使用,並且可能進一步優化。
為什么不編寫一個重復調用要運行的程序入口點的Java程序?
運行一次
java Run
主程序多次調用您的Test
類。
class Run {
public static void main(String[] args) {
for(int i=0; i<10; i++){
Test.main(args);
}
}
}
public class RunTest
{
public static void main(String[] args)
{
for(int i=1; i<=10; i++)
Test.main(args);
}
}
這應該做到這一點。 您可以使用傳遞給main函數的相同參數調用Test類的main函數。 這是另一張海報提到的“包裝紙”。
使用這樣的代碼:
public static void main2(String args[]){ // change main to main2
for(int i=0;i<10;i++)main(args);
}
public static void main(String args[]){ // REAL main
//...
}
Perhas一個ProcessBuilder
會適合嗎? 比如,像
String[] cmd = {"path/to/java", "test"};
ProcessBuilder proc = new ProcessBuilder(cmd);
Process process = proc.start();
你想要做的就是把循環里面什么Test
類或傳遞要循環的次數作為參數傳遞給main()
內部Test
。
注意:
如果您正在考慮JIT優化,則需要超過10次迭代才能啟動。
與前面的示例相同,但使用命令行參數
public class Test {
public static void main(String[] args) {
if ( args.length > 0) {
final Integer n = Integer.valueOf(args[0]);
System.out.println("Running test " + n);
if ( n > 1 ) {
main(new String[] { Integer.toString(n-1) });
}
}
}
}
使用args指示運行次數
$ java Test 10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.