2

Test.class以下のスクリプトを使用した場合、Javaプログラムがあるとします。

for i in 1..10
do
    java Test
done

java TestJVMは、呼び出されるたびに終了します。

私が欲しいのはjava Test、JVMを終了せずに複数回実行することです。これにより、前の実行で最適化されたメソッドを後の実行で使用でき、場合によってはさらに最適化できます。

4

7 に答える 7

4

実行したいプログラムのエントリポイントを繰り返し呼び出す Java プログラムを作成してみませんか?

于 2012-08-16T17:12:12.137 に答える
3

これを1回実行

java Run

Testクラスを複数回呼び出すメインプログラム。

class Run {

    public static void main(String[] args) {
        for(int i=0; i<10; i++){
            Test.main(args);
        }
    }
}
于 2012-08-16T17:21:16.733 に答える
2
public class RunTest
 {
    public static void main(String[] args)
      {
          for(int i=1; i<=10; i++)
              Test.main(args); 
      }
 }

これでうまくいくはずです。メイン関数に渡すのと同じ引数を使用して、Test クラスのメイン関数を呼び出すことができます。これは、別のポスターが言及した「ラッパー」です。

于 2012-08-16T17:21:14.377 に答える
1

次のようなコードを使用します。

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
   //...
}
于 2012-08-16T17:18:05.237 に答える
0

前の例と同じですが、コマンドライン引数を使用します

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) });
            }
        }
    }
}

引数を使用して実行数を示します

$ java Test 10
于 2012-08-16T17:32:00.963 に答える
0

やりたいことは、ループをTestクラス内に置くか、ループする回数を引数として内部に渡すことmain()ですTest

ノート:

JITの最適化を検討している場合、開始するまでに 10 回以上の反復が必要になります。

于 2012-08-16T17:13:08.747 に答える
0

おそらくProcessBuilder適切でしょうか?たとえば、次のようなもの

String[] cmd = {"path/to/java", "test"};
ProcessBuilder proc = new ProcessBuilder(cmd);
Process process = proc.start();
于 2012-08-16T17:12:23.290 に答える