0

我想多次运行保存在本地磁盘上的 jar 文件。jar 文件应在给定实例中运行多次。所有的 jar 文件(同一个文件)应该一起运行。有没有办法我可以实现它?我是否必须编写一个会创建多个线程的代码?

现在我暂时打开了许多命令提示符并在 cmd 中分别调用 jar,因此同时运行它们。但这不是一种有效的方式。有没有更有效的方法来做到这一点?

任何帮助将不胜感激。

4

2 回答 2

4

我无法打开 20-30 cmd 窗口并单独运行它们,它对处理器的负载很重

使用该方法会产生 (20-30)-1 JVM 的开销。您可以像这样创建第二个主类:

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 在一个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);
    ...
于 2012-09-07T08:33:34.743 回答
0

要运行某些东西,您需要一个线程。如果你想同时运行多次,你需要多个线程。并非所有代码都编写为线程安全的,因此您需要检查代码是否正确运行。

于 2012-09-07T08:10:02.970 回答