0
すべての文字列置換をExecutorServiceで印刷したいのですが、単一スレッドで実行するよりも高速ではありません。Java文字列置換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第 マイコンピュータ:8 GBの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
あなたは1つのタスクしか提出していないとご存じでしょうか?したがって、エグゼキュータ内の他のスレッドはすべてアイドル状態のままです。 –