Как правильно использовать Fork/Join Framework?
Я пишу простую программу с Fork/Join Framework. Для первой версии моей программы, которая не работает правильно, я использовал книгу "Герберт Щит. Java 7", для второй - я использовал Google. Пожалуйста, помогите мне понять, почему код, как в книге, не работает правильно?? Какая разница??
V1:
if (to - from < range) {
for (int i = from; i < to; i++) {
int result = checker.checkCode(i);
if (result != CodeChecker.INCORRECT_CODE) {
stop.set(true);
return result;
}
}
return CodeChecker.INCORRECT_CODE;
} else {
int middle = (int) (((long) from + to) >> 1);
BruteForceTask left;
BruteForceTask right;
left = new BruteForceTask(uri, from, middle, range, checker);
right = new BruteForceTask(uri, middle, to, range, checker);
left.fork();
right.fork();
int leftResult = left.join();
int rightResult = right.join();
return leftResult != CodeChecker.INCORRECT_CODE ? leftResult : rightResult;
}
V2:
else {
int middle = (int) (((long) from + to) >> 1);
BruteForceTask left;
BruteForceTask right;
left = new BruteForceTask(uri, from, middle, range, checker);
right = new BruteForceTask(uri, middle, to, range, checker);
left.fork();
int rightResult = right.invoke();
int leftResult = left.join();
return leftResult != CodeChecker.INCORRECT_CODE ? leftResult : rightResult;
}
Главный:
ForkJoinPool pool = new ForkJoinPool();
BruteForceTask bruteForce = null;
bruteForce = new BruteForceTask(uri, from, to, range, codeChecker);
result = pool.invoke(bruteForce);