Java Specialists' Java Training Europehome of the java specialists' newsletter

Extreme Java - Concurrency Performance for Java 8 Course

"Java Concurrency in Practice" and "Performance Tuning" combined as a 3-day intensive course.

This course could be your most productive learning experience ever! It is aimed at the busy Java professional who wants to quickly learn and apply new essentials on core Java topics. All topics have been thoroughly researched by Dr Heinz Kabutz, famous in over 135 countries for his Java Specialists' Newsletter.

During the course we use the new Java 8 syntax for lambdas and streams, making the code more readable. You will learn about threading, performance, compare-and-swap non-blocking constructs, garbage collectors and many other topics that you will be able to quickly apply in your own work. We will also cover all relevant constructs found in Java 8, such as StampedLock, LongAdder, parallel streams and many more. As a side effect, you will get familiar with Java 8 lambdas and streams.

Please look at the outline to see all the topics covered. During the training, you will always get a chance to try out what you have learned in carefully thought out exercises. This will help you understand and quickly internalize what you have just learned.


Students who have successfully completed this course, can expect the following outcomes:

  1. Throughout the course, we use the new Java 8 syntax. The first outcome would thus be an understanding of how lambdas and streams work in Java 8.
  2. Students gain a good understanding of why threads are important and what the risks are. They learn how to share objects safely, including visibility concerns. They also master safety techniques of thread confinement, stack confinement and object confinement. Through this, they learn how to design a thread-safe class.
  3. They will know the difference between a synchronized and a concurrent collection and when to use which one. This is particularly important to be able to write high-performance code that scales well.
  4. They would understand how a blocking queue can be used to build producer consumer systems and what the various blocking queues are in Java.
  5. They would know how Semaphore, CountDownLatch and Phaser works.
  6. Students would learn how to use the thread pool executors to run tasks asynchronously. They would also learn how to configure these, including how to cope with an unexpected number of tasks and how the various settings interact.
  7. They will learn how to break up a large tasks into smaller tasks by choosing good task boundaries, resulting in tasks that are homogeneous and independent.
  8. They would learn how to cleanly cancel tasks that have been started by using interruptions and volatile boolean fields.
  9. Students would learn how the Fork/Join Pool works by comparing it to a normal single-threaded recursive algorithm. They will also get an opportunity to refactor a piece of Fork/Join Code to use parallel streams instead, in order to see how Java 8 can make coding a bit easier.
  10. Students would know how to detect and solve liveness issues, such as deadlock, livelock and contention.
  11. They would also know how to find and solve performance bottlenecks, especially in threaded code.
  12. They would know how ReentrantLock, ReentrantReadWriteLock and the new Java 8 StampedLock work and how we can use that to write efficient code using optimistic techniques.
  13. They would know how to write their own synchronizers when needed, by creating state-dependent classes.
  14. Students would understand what atomic classes are and know techniques to use them to build efficient non-blocking classes that offer better performance under contention.
  15. They would understand the most common garbage collection algorithms: throughput, concurrent and G1 and also how to tune each one to give best performance.
  16. They would know how to discover performance bottlenecks in an application and also how to solve these. They would also learn how profilers can be used to find bottlenecks and the role of microbenchmarks in confirming these.
  17. Throughout the course, a strong emphasis is placed on the practical application of learning. Each student needs to complete a set of exercises to demonstrate that they have understood the material.

Make Enquiry


"The course is founded on the book 'Java Concurrency In Practice', which is obligatory reading for Java software specialists. But teams that need to arrive together at a common understanding of the advanced topic of Java concurrency will benefit both from the course's clear focus on the essential topics and from the practical exercises."
Marko Zarkovic, Canada


This course is ideally suited to the professional Java programmer with at least 2 years experience, who would like to learn how to truly understand Java concurrency.

Previous Training Preferably a formal qualification in computer science or related field.

Required Experience At least two years of professional Java programming.

Equipment Please consult our setup guide on how to set up your lab.


To get the most from the course, we recommend that you study some of the relevant articles on this newsletter. We have put together a free PDF containing all those newsletters that have had an influence in shaping this course. Please click here to download your free copy.


There are several options for you to attend this course:

    Inhouse course: Presented at your company either in person or via video conferencing. Price is $15750 (€13500) for up to 10 students, above that is an additional $1575 (€1350) per student, plus the travel expenses of the instructor. Please contact us to make a booking.
    Classroom course: We offer this course as a class room course in various locations around the world, such as San Francisco, Ottawa, Toronto, Düsseldorf, Paris and Chania on Crete, to name a few. Price for the 3 day course is $3150 (€ 2700) per student. See below for our course calendar or send us an enquiry if your city is not listed.

Open Courses

All our courses are offered as inhouse courses. However, we have formed training partnerships with selected companies. The course will still be presented by Heinz Kabutz or a certified trainer, such as Maurice Naftalin, author of Java Generics and Collections:

Place Remote
Dates Presenter Language Fees
Canoo Basel or Zürich Yes 15-17 March 2017
9:00-17:00 CEDT
Kabutz English CHF 2850

Note: All quoted prices are excluding VAT and other local taxes. Please contact us for an exact quote for your situation.

Course Guarantee

Once you have signed up and paid for one of our open courses held at the Java Specialists Headquarters in Chorafakia in Chania on the Island of Crete, we guarantee that it will take place on those dates. You can thus book your travel with peace of mind that there will not be changes to the schedule. This only applies once you have booked and paid for your course. We do reserve the right to change dates depending on customer demand. However, even if you are the only person signed up for the course, it will still take place on the agreed upon dates. We believe that customer satisfaction is more important than short-term profit.

Furthermore, we guarantee that you will be satisfied with the training. Should you not be happy within the first half day of the course, we will refund you the price of the course fees. No refunds will be given after lunch on the first day, as you would have already gained too much valuable information by that time.

1. Course Overview 2. Course Outline
Extreme Java - Concurrency and Performance for Java 8
Extreme Java - Advanced Topics for Java 8
Design Patterns
In-House Courses

© 2010-2016 Heinz Kabutz - All Rights Reserved Sitemap
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. is not connected to Oracle, Inc. and is not sponsored by Oracle, Inc.