Я думаю, что вы слишком рано закрываете своего исполнителя. Это пример того, как я думаю, что вы должны работать.
public class Main {
public static void main(String[] args) throws Exception {
// the array to modify
final int[] array = new int[1000];
// start the executor (that modifies the array)
ExecutorService executor = Executors.newFixedThreadPool(10);
for (int i = 0; i < 1000; i++) {
final int c = i;
executor.execute(new Runnable() {
@Override
public void run() {
array[c] = c;
}
});
}
// wait for all tasks to quit
executor.shutdown();
while (!executor.awaitTermination(10, TimeUnit.SECONDS));
// print the array
System.out.println(Arrays.toString(array));
}
}
Также обратите внимание, что работает на одном массиве, в то же время может привести к несогласованности - вы должны быть действительно уверены, что вы не делаете работу на массив, который зависит от массива. более
RejectedExecutionException брошен «, когда задача не может быть принят к исполнению." Возможно, у вас есть простая ошибка в потоке управления, поэтому я предлагаю вам показать нам какой-то код. –
Кроме того, какую конкретную реализацию «Исполнителя» вы используете? –