Vraag Java 8 Stream multithreading


mylist.stream()
      .filter(m -> m.isokay() != null)
      .forEach(m -> m.dosomething()));

Is het voor deze code meerdere threads? Zo nee, hoe kan ik het doen? Ik wil elk m.dosomething() om op afzonderlijke threads te lopen om dit werk te versnellen.


11
2017-10-16 20:27


oorsprong


antwoorden:


Gebruik parallelStream() om dit te bereiken. Merk op dat de documentatie zegt dat het "mogelijk parallel" is, dus er is een kans dat je een niet-parallelle stream zou kunnen retourneren. Ik kan me voorstellen dat die gevallen zeldzaam zijn, maar wees ervan bewust dat het in feite een beperking is.

mylist.parallelStream()
      .filter(m -> m.isokay() != null)
      .forEach(m -> m.dosomething()));

14