У меня есть следующий код, который не работает так, как я задумал (пропускается случайная строка вместо первой):
Files.lines(path)
.skip(1)
.parallel()
.forEach( System.out::println )
У меня такое чувство, что я неправильно понял поведение Streams. Вопрос в следующем: могу ли я сначала рассматривать поток как последовательный (и использовать «промежуточные операции с отслеживанием состояния»), а затем передавать его в параллельный forEach
?
.parallel()
? - person Esko   schedule 17.12.2013forEachOrdered
. И тогда скип будет работать нормально и поток будет параллельным. Однако вам все равно придется терпеть очень непредсказуемую и неконтролируемую формулу генерации потоков. Лучше свернуть самостоятельно. Если, как я пытался и работает, у вас много краткосрочных задач, то, похоже, это работает. - person The Coordinator   schedule 21.12.2013forEachOrdered
на сам forEach? Я думаю, что это так, и отключает параллелизм. mail.openjdk.java.net/pipermail/lambda-dev/2013-June/010126.html - person Aleksandr Dubinsky   schedule 22.12.2013