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