Можем ли мы использовать реализацию ForkJoinPool с неизвестным размером пакета, к которому она должна «присоединиться» - PullRequest
0 голосов
/ 27 февраля 2019

Это мое первое знакомство с ForkJoinPool, и я пытаюсь понять, могу ли я преобразовать свою существующую реализацию ExecutorService в реализацию ForkJoinPool?Сценарий: моему приложению необходимо выполнить две операции для нескольких потоков:

  • Первая операция выполняет некоторое копирование данных, которое может происходить в параллельных потоках без нарушения функциональности.[ выглядит подходящим для выполнения подзадачи в стиле FORK ]

  • Вторая операция выполняет перезапуск сервера, который можно запросить только после того, как последний поток завершит копирование данных.В настоящее время базовое серверное приложение обрабатывает логику отклонения повторных запросов на перезапуск, если ранее запрошенный перезапуск все еще происходит.[ Я пытаюсь решить, может ли это быть реализовано как подзадача JOIN ?]

В текущей реализации мы выполняем оба шага независимо для каждого потока, но частые запросы на перезапуск связаны с определенным риском.

Вопросы:

  1. Я не могу понять, можно ли выполнить реализацию ForkJoinPool, если мы не знаем, сколько активных / работающих потоков нам нужно объединить,
  2. При каких условиях мы должны «ждать» присоединения, если мы не знаем, сколько таких запросов придет?
  3. Стоит ли вместо этого смотреть на реализацию CountDownLatch?
...