Как правильно использовать Fork/Join Framework в Java?

215
10 ноября 2017, 07:26

I write simple program with Fork/Join Framework. For first version of my program, that not working correct, I used the book "Herbert Shield. Java 7", for second - I used Google. Please, help me to understand, why code like in the book is not working correct?? What the difference?? Я пишу простую програму с использованием Fork/Join Framework. Для первой версии моей програмы я использовал, в качестве примера, код из книги Гербера Шилда "Java 7. Руководство для начинающих", для второй - код из Гугла. Почему версия из книги не работает должным образом (не все участки фрагментируются), ведь разница в коде только лишь в запуске допольнительного потока??

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;
 }

Main:

ForkJoinPool   pool       = new ForkJoinPool();
BruteForceTask bruteForce = null;
bruteForce = new BruteForceTask(uri, from, to, range, codeChecker);
result = pool.invoke(bruteForce);
READ ALSO
Работа с GET/POST и брузером

Работа с GET/POST и брузером

Нужно реализовать такой функционал для входа в приложение через twitchПользователь в приложении (написанном на JavaFx) нажимает кнопку Login, открывается...

192
Выделить произвольную область кода. IntelliJ IDEA 2017.2.5

Выделить произвольную область кода. IntelliJ IDEA 2017.2.5

Как выделить какую-то произвольную область кода в IDE IntelliJ IDEA 20172

186
Ключевое слово &ldquo;is&rdquo;

Ключевое слово “is”

Подскажите почему возникают ошибки

188