Условная обработка потоков Java 8

Я заинтересован в разделении потока на два или более подпотока и обработке элементов различными способами. Например, (большой) текстовый файл может содержать строки типа A и строки типа B, в этом случае я хотел бы сделать что-то вроде:

File.lines(path)
.filter(line -> isTypeA(line))
.forEachTrue(line -> processTypeA(line))
.forEachFalse(line -> processTypeB(line))

Предыдущее - моя попытка абстрагировать ситуацию. На самом деле у меня есть очень большой текстовый файл, в котором каждая строка проверяется на соответствие регулярному выражению; если линия проходит, то она обрабатывается, тогда как если она отклонена, то я хочу обновить счетчик. Это дальнейшая обработка отклоненных строк, поэтому я не просто используюfilter.

Есть ли какой-нибудь разумный способ сделать это с потоками, или мне придется вернуться к циклам? (Я хотел бы, чтобы это также выполнялось параллельно, поэтому потоки - мой первый выбор).

Ответы на вопрос(7)

Ваш ответ на вопрос