Heinz Kabutz | Devoxx

Heinz Kabutz
Heinz Kabutz Twitter

From JavaSpecialists.eu

Dr Heinz Kabutz writes the popular "The Java Specialists' Newsletter" read by tens of thousands of enthusiastic fans in over 138 countries. To sign up, visit http://www.javaspecialists.eu

Blog: http://www.javaspecialists.eu

java Java Language

Turbo Charge CPU Utilization in Fork/Join Using the ManagedBlocker


Fork/Join is a framework for parallelizing calculations using recursive decomposition, also called divide and conquer. These algorithms occasionally end up duplicating work, especially at the beginning of the run. We can reduce wasted CPU cycles by implementing a reserved caching scheme. Before a task starts its calculation, it tries to reserve an entry in the shared map. If it is successful, it immediately begins. If not, it blocks until the other thread has finished its calculation. Unfortunately this might result in a significant number of blocked threads, decreasing CPU utilization. In this talk we will demonstrate this issue and offer a solution in the form of the ManagedBlocker. Combined with the Fork/Join, it can keep parallelism at the desired level.

java Java Language

Using Java 8 Lambdas and StampedLock To Manage Thread Safety


In this talk, you will learn:

  • What is StampedLock (introduced in Java 8)?
  • How can the StampedLock provide an effective way to manage thread safety with objects that contain several fields (with invariants across them) in many producer/ many consumer systems?
  • What are common StampedLock idioms – and how can Lambdas be applied to make them pluggable?
  • What are some lock-free solutions, based on AtomicReference / Unsafe / VarHandles?