Какая разница между parallel() and parallelStream()? Что-то ни дока ни инфа в инете пока не помогают. Если это важно, то для примера возьмем обычный arraylist c 100 000 элементов.
Есть одно предположение:
Collection.parallelStream()
вы можете вызвать только на коллекции, т.е. сразу распараллелить задачу.
В случае Stream.parallel()
вы можете выполнить какие-либо действия со стримом в однопоточном режиме и после распараллелить.
Так же как и в случае Collection.foreach()
и Stream.foreach()
Вы либо сразу на коллекции вызываете foreach()
либо сначла выполняете нужные вам действия и потом вызываете foreach()
Разницы между методами parallelStream()
и stream().parallel()
, вызванными для коллекций нет. Единственное, что делается в каждом случае - поток помечается флагом, что он может выполняться в несколько потоков. А вот будет он выполняться в несколько потоков (и насколько много их может быть) или нет - зависит от реализации сплитератора, на основании которого поток создаётся.
Более того, можно снять этот флаг, вызвав у потока метод sequential()
, и тогда такой поток не будет распараллелен.
Если для потока вызвать несколько раз подряд методы parallel()
или sequential()
то эффект будет от того вызова, который был последним (соответственно, какое значение флага осталось после последнего вызова).
Виртуальный выделенный сервер (VDS) становится отличным выбором
Если я использую TreeSet для сортировки элементов (товаров с полями category, name, price), как я могу заменить одно из этих полей на значение, которое пользователь...
Нужно написать алгоритм , который будет проверять наличие слова в слове