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'
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
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
Students who have successfully completed this course, can
expect the following outcomes:
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.
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.
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.
They would understand how a blocking queue can be used to
build producer consumer systems and what the various
blocking queues are in Java.
They would know how Semaphore, CountDownLatch and Phaser
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.
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.
They would learn how to cleanly cancel tasks that have
been started by using interruptions and volatile boolean
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
Students would know how to detect and solve liveness
issues, such as deadlock, livelock and contention.
They would also know how to find and solve performance
bottlenecks, especially in threaded code.
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.
They would know how to write their own synchronizers when
needed, by creating state-dependent classes.
Students would understand what atomic classes are and
know techniques to use them to build efficient
non-blocking classes that offer better performance under
They would understand the most common garbage collection
algorithms: throughput, concurrent and G1 and also how to
tune each one to give best performance.
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.
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.
"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.
Preferably a formal qualification in computer science or related field.
At least two years of professional Java programming.
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
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
an enquiry if your city is not listed.
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
|Canoo Basel or Zürich
||15-17 March 2017
Note: All quoted prices are excluding VAT and other local
taxes. Please contact
us for an exact quote for your situation.
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.