同时运行相同的jar文件多次

时间:2012-09-07 08:07:17

标签: java jar simultaneous

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

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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

  

我无法打开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);
    ...

答案 1 :(得分:0)

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