Здесь мое понимание Потоковая инфраструктура Java 8:
- Что-то создает источник Stream
- Реализация отвечает за предоставление метода BaseStream # parallel(), который по очереди возвращает поток, который может выполнять его параллельно.
В то время как кто-то уже нашел способ использовать собственный пул потоков с параллельными каскадами Stream, я не могу на всю жизнь найти какое-либо упоминание в Java 8 API, что реализация Java по параллельному потоку Java по умолчанию будет использовать ForkJoinPool # commonPool(). (Коллекция # parallelStream(), методы в StreamSupport и другие возможные источники параллельных потоков в API, о которых я не знаю).
Только лакомые кусочки, которые я мог отследить от результатов поиска, были следующими:
-
Состояние выпуска Lambda: Libraries Edition ( "Parallelism под капотом" )
Смутно упоминает структуру Stream и оборудование Fork/Join.Машины Fork/Join предназначены для автоматизации этого процесса.
-
JEP 107: Операции массовых данных для коллекций
Почти прямо указывает, что метод по умолчанию для интерфейса коллекции #parallelStream() реализует себя с помощью Fork/Join. Но все равно ничего общего с пулом.Параллельная реализация основывается на реализации java.util.concurrency Fork/Join, внедренной в Java 7.
и, следовательно: Коллекция # parallelStream().
-
Массивы классов (Javadoc)
Непосредственно указывает несколько раз, что используется общий пул.Общий пул ForkJoin используется для выполнения любых параллельных задач.
Итак, мой вопрос:
Где сказано, что ForkJoinPool # commonPool() используется для параллельных операций над потоками, которые получены из Java 8 API?