New Java Concurrency Utilities

New Java Concurrency Utilities

There are a couple of new concurrency utilities in Java 8. The most relevant one is CompletableFuture. The regular Future is used for retrieval of a result that is produced by a task (typically a task that is executed in a thread pool). For this purpose the regular Future supports waiting for the result and retrieving it once it has been produced. After retrieval the result is processed synchronously.

The new CompletableFuture, in contrast, supports asynchronous result processing: we need not wait until the result of a task has been produced, instead we can upfront specify an action (the result processing) that will later be executed automatically when the result appears. In addition, Java 8 comes with a couple of minor extensions related to concurrency: StampedLock (a ReadWriteLock with optimistic Read), LongAdder / LongAccumulator (as an alternative to AtomicLong), new operations in ConcurrentHashMap (e.g.. computeIfAbsent, forEach, reduce, search), the Common Pool (a singleton ForkJoinPool) and the @Contended annotation (to prevent False Sharing).

Video producer: http://gotocon.com/
Slides of the presentation: http://gotocon.com/dl/goto-berlin-2014/slides/protected/AngelikaLanger_NewConcurrencyUtilitiesInJava8.pdf