Is there a way to receive a Stream<String> stream
out of a BufferedReader reader
such that each string in stream
represents one line of reader
with the additional condition that stream
is provided directly (before reader
read everything)? I want to process the data of stream
parallel to getting them from reader
to save time.
Edit: I want to process the data parallel to reading. I don't want to process different lines parallel. They should be processed in order.
Let's make an example on how I want to save time. Let's say our reader
will present 100 lines to us. It takes 2 ms to read one line and 1 ms to process it. If I first read all the lines and then process them, it will take me 300 ms. What I want to do is: As soon as a line is read I want to process it and parallel read the next line. The total time will then be 201 ms.
What I don't like about BufferedReader.lines()
: As far as I understood reading starts when I want to process the lines. Let's assume I have already my reader
but have to do precomputations before being able to process the first line. Let's say they cost 30 ms. In the above example the total time would then be 231 ms or 301 ms using reader.lines()
(can you tell me which of those times is correct?). But it would be possible to get the job done in 201 ms, since the precomputations can be done parallel to reading the first 15 lines.