Как читать все строки файла параллельно в Java 8

Я хочу как можно быстрее прочитать все строки большого файла размером 1 ГБ вStream<String>, В настоящее время я используюFiles(path).lines()&nbsp;для этого. После разбора файла я делаю некоторые вычисления (map()/filter()) Сначала я подумал, что это уже сделано параллельно, но, похоже, я ошибаюсь: при чтении файла, как он есть, на моем двухпроцессорном ноутбуке уходит около 50 секунд. Однако если я разделю файл с помощью команд bash, а затем обработаю их параллельно, это займет около 30 секунд.

Я попробовал следующие комбинации:

один файл, без параллельных линий () поток ~ 50 секундотдельный файл,Files(..).lines().parallel().[...]&nbsp;~ 50 секунддва файла, без параллельных линий () strean ~ 30 секунддва файла,Files(..).lines().parallel().[...]&nbsp;~ 30 секунд

Я запускал эти 4 раза с примерно одинаковыми результатами (на 1 или 2 секунды).[...]&nbsp;является цепочкой только карты и фильтра, сtoArray(...)&nbsp;в конце, чтобы вызвать оценку.

Вывод заключается в том, что нет никакой разницы в использованииlines().parallel(), Поскольку параллельное чтение двух файлов занимает меньше времени, при разделении файла увеличивается производительность. Однако кажется, что весь файл читается последовательно.

Редактировать:&nbsp;Я хочу отметить, что я использую SSD, так что есть практически время искать. Всего в файле 1658652 (относительно короткие) строки. Разделение файла в bash занимает около 1,5 секунд:time split -l 829326 file # 829326 = 1658652 / 2 split -l 829326 file 0,14s user 1,41s system 16% cpu 9,560 total

Итак, мой вопрос: есть ли в Java 8 JDK какой-либо класс или функция, которые могут распараллеливать чтение всех строк без необходимости сначала разбивать их? Например, если у меня два ядра процессора, программа чтения первой строки должна начинаться с первой строки, а вторая - с строки(totalLines/2)+1.