0
ExecutorService를 사용하여 모든 문자열 순열을 인쇄하고 싶지만 단일 스레드에서 실행하는 것이 더 빠르지 않습니다.Java String permutation ExecutorService
내 코드 :
private static void setUpThreads(String startCharacter, char inputLength[], String withoutStartChar, int threadnumber) {
ExecutorService exec = Executors.newFixedThreadPool(threadnumber);
exec.execute(() -> permutation(startCharacter, inputLength, 0, withoutStartChar));
exec.shutdown();
try {
exec.awaitTermination(600, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
의 ThreadNumber는 결과가 내 컴퓨터에서도 동일하게 나타날 1 또는 8이 될 수 있습니다. 난 Startchar으로 테스트하십시오 inpuLength 17 withoutStartCharacter : SDF 을 결과는 동일 할 것이다 135초 내 컴퓨터 8GB의 RAM (4 코어 8 스레드)
그리고 전치 코드 i7-6700HQ :
private static void permutation(String startCharacters, char[] maxLength, int pos, String input) {
if (pos == maxLength.length) {
if (leRepetation(maxLength))
System.out.println(startCharacters + new String(maxLength));
} else {
for (int i = 0; i < inputSize; i++) {
maxLength[pos] = input.charAt(i);
permutation(startCharacters, maxLength, pos + 1, input);
}
}
}
어떻게하면 멀티 스레딩으로 프로세스 속도를 향상시킬 수 있습니까? 아니면 속도를 높이는 다른 방법은 없을까요?
멀티 스레딩없는 속도는 무엇입니까? 초입니까? 의사록? –
ExecutorService가없는 경우 135 초, ExecutorService가있는 경우 135 초 (스레드 8 개) – Davinho
하나의 작업 만 제출한다는 사실을 알고 있습니까? 따라서 집행자의 다른 모든 스레드는 그냥 유휴 상태로 있습니다. –