У меня есть что-то вроде:Параллельно в Java 7 с результатом, используя неконечное переменные
int [] array1 = new int[20];
int [] array2 = new int[20];
int total= 0;
Random generator = new Random();
for(int i = 0; i < 10000; i++){
int tmp = generator.nextInt(20);
boolean win = custom_function(...);
array1[tmp]++;
array2[tmp]++
total++;
}
// do something with the arrays
И я не знаю, как реализовать его параллельно! При использовании конструкции, как
ExecutorService exec =
Executors.newFixedThreadPool(SOME_NUM_OF_THREADS);
try {
for (final Object o : list) {
exec.submit(new Runnable() {
@Override
public void run() {
// do stuff with o.
}
});
}
} finally {
exec.shutdown();
}
Я просто не возвращения ничего или изменить что-либо, потому что он работает только с конечными переменными может! Как действовать?
Каждый работоспособным должен изменить переменные array1[tmp]
, array2[tmp]
и array3[tmp]
. Обратите внимание, что это может быть сделано через какое-то соединение вилки, я просто не знаю, как это сделать.
Как вы хотите, чтобы распараллелить? (Что должен делать каждый «Runnable», если он мог бы вернуть результат?) – Radiodef
Каждый runnable должен изменять переменные array1 [tmp], array2 [tmp] и array3 [tmp]. Обратите внимание, что это может быть сделано через какое-то соединение вилки, я просто не знаю, как это сделать ... –