我在 java 中有一個 for 循環,它具有以下結構,我需要將其并行化為固定數量的線程。讓我們說這個數字在numThreads. for 循環如下。請注意,只有外循環需要并行化。我想我需要使用 Executor,但我不知道如何將工作負載拆分到不同的線程中,如果這會改變我在isInsulator[x][y]. 基本上我想要不同的線程拆分 X 的值并為分配給它們的那些 x 值運行 for 循環。那有意義嗎?任何人都可以幫助我實現這一目標,或者請把我推向正確的方向?
2 回答

一只萌萌小番薯
TA貢獻1795條經驗 獲得超7個贊
編寫一個基準測試(這樣你就可以證明并行處理確實更快),使用 JMH。
將代碼重寫為
produce_inputs->process->collect_or_summarize
管道使用 parallel
Stream
s API(它使用內部 fork-join 池調整到盒子上的 CPU 數量)。比較順序和并行處理的性能。
int result = IntStream.generate(() -> 42) // 惰性輸入源 .limit(100) // 限制輸入數量 .parallel() // 使用并行處理// .sequential() // ...或順序處理 .map(x -> x + 1) // 進行處理 .reduce(0, Math::addExact); //總結結果// .collect(toList()); // ...或者只是將其收集到容器中
添加回答
舉報
0/150
提交
取消