は、スレッドへの入力配列を分割したサンプルアプリケーションです。実際に
final int threadCount = 7;
final int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int from = 0;
for (int i = 0; i < threadCount; i++) {
final int to = (from + (int) Math.ceil((a.length - from)/(double) (threadCount - i)));
System.out.println("Thread #" + i + " will use " + Arrays.toString(Arrays.copyOfRange(a, from, to)));
from = to;
}
(@Andreasのおかげで)、代わりに天井の、あなたは、単に整数演算を使用することができます。
final int to = from + ((a.length - from)/(threadCount - i));
出力:
Thread #0 will use [1, 2]
Thread #1 will use [3, 4]
Thread #2 will use [5, 6]
Thread #3 will use [7]
Thread #4 will use [8]
Thread #5 will use [9]
Thread #6 will use [10]
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] '* 10次元配列* 10要素の配列。 '{1,2,3,4,5,6,7,8,9,10}'は10要素の配列です。 – Andreas
ExecutorServiceを必要な数のスレッドを持つスレッドプールで使用する方法はありますか? ExecutorService pool = Executors.newFixedThreadPool(poolSize)と同様です。次に、配列を反復し、各要素をパラメータとして実行可能なタスクに送信することによって、タスクを送信できます。 https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html – mdewit