Из поток javadoc:
Потоковые конвейеры могут выполняться последовательно или параллельно. Этот режим выполнения является свойством потока. Потоки создаются с первоначальным выбором последовательного или параллельного выполнения.
Мои предположения:
- Функциональная разница между последовательными/параллельными потоками отсутствует. На выход не влияет режим выполнения.
- Параллельный поток всегда предпочтительнее, учитывая соответствующее количество ядер и размер проблем, чтобы оправдать накладные расходы из-за повышения производительности.
- Мы хотим написать код один раз и работать где угодно, не заботясь об оборудовании (это, в конце концов, Java).
Предполагая, что эти допущения действительны (ничего неправильного в части мета-допущения), , какое значение имеет режим выполнения, открытый в api?
Кажется, вы должны просто объявить Stream
, и выбор последовательного/параллельного выполнения должен обрабатываться автоматически в слое ниже, либо с помощью кода библиотеки, либо самого JVM как функции доступных ядер во время выполнения, размер проблемы и т.д.
Конечно, предполагая, что параллельные потоки также работают на одноядерной машине, возможно, только при использовании параллельного потока это достигается. Но это действительно уродливо - почему есть явные ссылки на параллельные потоки в моем коде, когда это опция по умолчанию?
Даже если есть сценарий, в котором вы намеренно захотите жестко закодировать использование последовательного потока - почему для этой цели существует не только под-интерфейс SequentialStream
, а не загрязнение Stream
выполнением переключатель режима?