2015-01-07 3 views
-2

Что такое Примеры сценариев реального мира оправдывают использование исполнителя fork/join вместо исполнителя пула потоков в Java 7/8?Когда исполнитель Fork/Join предпочел исполнитель пула потоков в Java?

+1

Почему -1? это не здорово, когда люди -1 и не говорят, почему. – Wojtek

+2

Согласен, и это не слишком «слишком широкий» вопрос (хотя это может быть дубликат). У пула fork-join есть функция кражи работы: когда ваша исполняющая задача вызывает 'join()', она * потенциально отдает свой поток другой задаче. * Это полезно для приложений, таких как сортировка с параллельным слиянием: с обычным исполнителем службы, вы запускаете задачи для дочерних ролей, но ваша родительская задача по-прежнему удерживает поток в ожидании дочерних элементов. В результате у вас быстро заканчиваются потоки. Для сравнения, пул fork-join потенциально может использовать поток родительской задачи для выполнения дочерней задачи. – kdgregory

ответ

1

Рамка fork-join должна использоваться для задач, которые могут быть разбиты на более мелкие куски рекурсивно. Вы можете сделать это с помощью простых пулов потоков, но тогда вам нужно будет написать намного больше кода.

Поиск «алгоритма разделения и покорения» в Интернете, и вы найдете множество примеров.

Смежные вопросы