20 ~ 30 の cmd ウィンドウを開いて個別に実行できません。プロセッサへの負荷が高くなります。
その方法では、(20-30)-1 JVM のオーバーヘッドがあります。次のように 2 番目のメイン クラスを作成できます。
public static void main(final String[] args) {
int numberOfSimultaneousExecutions = 25;
java.util.concurrent.Executor executor = java.util.concurrent.Executors.newFixedThreadPool(numberOfSimultaneousExecutions);
for (int i = 0; i < numberOfSimultaneousExecutions; i++) {
executor.execute(new Runnable() {
@Override
public void run() {
RealMainClass.main(args);
}
});
}
}
これで、JAR は1 つのJVM で同時に実行されます。
ただし、これは危険です。コードが共有静的値にアクセス (および変更) している場合、アプリケーションは ほぼ確実に 壊れます。
引数から同時実行数を取得することもできます。
public static void main(final String[] argsWithNum) {
int numberOfSimultaneousExecutions = Integer.parseInt(argsWithNum[0]);
final String[] args = new String[argsWithNum.length - 1];
System.arraycopy(argsWithNum, 1, args, 0, args.length);
java.util.concurrent.Executor executor = java.util.concurrent.Executors.newFixedThreadPool(numberOfSimultaneousExecutions);
...