Streams - parallel

  • Concurrent moddification of collection

  • wypisywac nazwy wątków

List<String> l = new ArrayList(Arrays.asList("one", "two"));
     Stream<String> sl = l.stream();
     l.add("three");
     String s = sl.collect(joining(" "));
  • konfiguracja streamu przez enumy
  • explicitly de-ordering the stream with unordered() may improve parallel performance for some stateful or terminal operations
reduce(new StringCombiner(", ", "[", "]"),
StringCombiner::add,
StringCombiner::merge

public class StringCollector implements Collector<String, StringCombiner, String> {
  public Supplier<StringCombiner> supplier() {
    return () -> new StringCombiner(delim, prefix, suffix);
  }
}
  • reduce - immutable (identity concept, monoid!!)
    • proper identity ""
    • wrong identity "aaa"
  • collect - mutable
    • reduce ze StringBuilderem
Stream.parallel().sequential() - last wins

L1

  • przykład z tym jak modyfikacja AtomicInt wpływa na spowolnienie obliczęń równoległych.
  • przygotowac specjalną metode do mierzenia czasu z voaltile.
  • spliterator
 txns.parallelStream()
               .unordered()
StreamSupport(SpliteratorsUnknownSize.spliteratorUnknownSize(iterators))

Default fork join pool

http://stackoverflow.com/questions/21163108/custom-thread-pool-in-java-8-parallel-stream

forkJoin.submit(
i tutaj operacje na strumieniu z wypisywaniem wątku
)

//puscic dwa streamy na razy na common pool
// co się dzieje z pulą wątków gdy sa zagnieżdzone streamy??
  • i main-thread też tam pracuje!!!!

Concurrent collectors

ConcurrentMap<Person.Sex, List<Person>> byGender =
    roster
        .parallelStream()
        .collect(
            Collectors.groupingByConcurrent(Person::getGender));
  • BaseStream.unordered
  • Collectors.toConcurrentMap
  • -Djava.util.concurrent.ForkJoinPool.common.parallelism=1,

rodzaje kolekcji

  • najlepiej ArrayList bo łatwo można podzielić
  • gorzej LinkedList
  • dlaczego Stream.iterate bardzo źle się dzieli na wątki :)

Long accumulator

http://www.nurkiewicz.com/2015/06/how-longaccumulator-and.html

Array

  • parallel sort

Exceptions!

Materialy

http://coopsoft.com/ar/Calamity2Article.html

results matching ""

    No results matching ""