Java Concurrency – the Right Way [Course]

Content

Java makes it easy to write concurrent applications. Each enterprise application framework processes incoming requests in parallel on multiple threads. Using the Thread class or Executor framework, any developer can run many tasks in parallel with just a few lines of code.

But concurrency comes at a price. Without a thorough understanding of the Java memory model and careful synchronization of access to shared variables and objects, you can end up with deadlocks, livelocks, invisible state changes, incompletely initialized objects, or other race conditions.

In this course, your developers will learn the correct implementation of concurrency in Java. Short theory blocks alternate with detailed, practical exercises.

Topics

  • Contention and deadlock detection tools
  • Executor framework and fork/join pools
  • Inter-thread communication
  • Types of synchronization
  • Java memory model and visibility of variable changes across thread boundaries
  • Variable access methods (plain, volatile, opaque, acquire/release)
  • VarHandles
  • Correct implementation of a thread-safe singleton in Java
  • JDK locks like ReentrantLock and StampedLock
  • Correct use of wait/notify
  • JDK data structures for multi-thread synchronization such as CountDownLatch and Phaser

After attending this course, your developers will see multithreading in Java through different eyes and be equipped to develop highly scalable enterprise applications and microservices.

Prerequisites

  • Several years of practical experience with Java; ideally first experience with concurrent programming
  • Workstation with Java 16 (or higher)
  • Java IDE: I use IntelliJ and recommend this to my students as well. But you can also use Eclipse.

You can find more information about my course offerings on the overview page.

Send your inquiry to [email protected].

Course Info

Trainer: Sven Woltmann

Duration: 3 or 4 days, upon consultation depending on the level of knowledge

You can find price details on the Java trainings overview page.