Jest jakas roznica miedzy multithread a parallelstream?
Powiedzmy podzielenie samemu listy na części i wrzuceniu w osobne watki wykona je równoległe tak samo jak parallel stream który podział i wrzucenie w pule wątków robi za nas pod spodem
Z tego co rozumiem to pytasz "jaka jest różnica pomiędzy iterowaniem ręcznie z wykorzystaniem narzędzi do wielowątkowości, a użyciem parallelStream()
".
No więc tak:
- Korzystając z
parallelStream()
możesz pisać operacje na streamach, co jest już plusem samym w sobie.
- Korzystając z
parallelStream()
nie musisz martwić się o ręczne zarządzanie wątkami, co najwyżej jedynie musisz utworzyć własny ForkJoinPool
jeśli nie chcesz odpalać tego na systemowym - a nie chcesz.
- Zarządzając wątkami ręcznie masz większą kontrolę nad wątkami, co daje więcej możliwości - w tym więcej możliwości by coś zepsuć.
Tak samo jak multihread jak i parallel stream moze wykonywać sie na jednym jak i wielu procesorach/rdzeniach rownolegle lub przez thread switching.
Z tego co kojarzę to pisząc na parallelStream()
twoja kontrola nad wątkami ogranicza się do odpalenia go na konkretnym ForkJoinPool
, natomiast to komputer sam sobie decyduje, które zadania i jak wykona równolegle.