나는 당신이 그 방법 (20 ~ 30) -1의 JVM의 오버 헤드가 프로세서
에, 무거운 부하를 20 ~ 30 cmd를 창을 열고 개별적으로 실행할 수 없습니다. 이 같은 두 번째 메인 클래스를 만들 수 있습니다
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);
...
는 "효율적", "동시에", "함께"정의합니다. –
@Tichodroma Simultaneously : 모든 jar 파일이 동일한 인스턴스에서 실행 중일 때. 함께 : 그것은 위의 게시물에서 동시에 유사합니다. 효율적인 : 20-30 cmd 창을 열 수 없으며 별도로 실행할 수 있습니다. 프로세서에 부하가 큽니다. – Spaniard89
몇 개의 CPU가 있습니까? 8 개의 코어가 있고 각 프로세스가 1-2 개의 CPU를 사용하는 경우 4-8을 실행하는 것이 최상의 솔루션이라는 것을 알 수 있습니다. –