我想多次运行保存在本地磁盘上的jar文件。 jar文件应该在给定的实例中运行多次。 所有jar文件(相同文件)应该一起运行。有没有办法实现它? 我是否必须编写一个可以创建多个线程的代码?
现在暂时打开许多命令提示符并在cmd中调用jar,因此同时运行它们。 但这不是一种有效的方式。有没有更有效的方法来做到这一点?
非常感谢任何帮助。
答案 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)
要运行某些东西,您需要一个线程。如果要同时多次运行某些内容,则需要多个线程。并非所有代码都是编写为线程安全的,因此如果执行此操作,则需要检查代码是否正常运行。