About the course
Building Java applications that are truly high-performance, responsive, and scalable is more crucial than ever. Traditional approaches to concurrency can be complex, error-prone, and limit throughput.
This course, "High-Performance Java: Concurrency & Reactive Techniques," is designed to equip you with the essential skills and knowledge to overcome these challenges using the power of modern Java.
Dive deep into the core concepts of concurrent programming in Java, from fundamental threading and synchronization to the advanced utilities in java.util.concurrent. Crucially, you will master Project Loom and Virtual Threads, a revolutionary feature that simplifies writing highly scalable concurrent code.
Beyond traditional concurrency, explore the world of Reactive Programming using the Java Flow API and popular libraries like RxJava. Learn how to design and implement systems that handle asynchronous data streams efficiently, improving responsiveness and resource utilization.
By blending foundational principles with the latest advancements like Virtual Threads and Reactive Streams, this course empowers you to write cleaner, more efficient, and massively scalable Java applications. Join us to unlock the full concurrent potential of the Java platform!
Instructor-led online and in-house face-to-face options are available - as part of a wider customised training programme, or as a standalone workshop, on-site at your offices or at one of many flexible meeting spaces in the UK and around the World.
-
- Apply core Java threading and synchronisation mechanisms effectively.
- Utilise advanced java.util.concurrent utilities for sophisticated concurrency control.
- Design and implement asynchronous tasks using modern CompletableFutures.
- Leverage Project Loom and Virtual Threads to write highly scalable concurrent applications with simpler code.
- Understand and apply the principles of Reactive Programming.
- Implement reactive systems using the standard Java Flow API.
- Effectively use reactive libraries like RxJava (or Project Reactor) with operators and schedulers to manage asynchronous data streams.
- Apply Java 9+ Process API features for external process management.
- Build more responsive, efficient and scalable high-performance Java applications.
-
This course is ideal for seasoned Developers (who have experience implementing the fundamentals of Java) who are looking to significantly enhance their skills in building high-performance, responsive, and scalable applications. It is particularly relevant for those who need to:
Improve the efficiency and throughput of existing Java applications.
Develop new systems capable of handling high volumes of concurrent operations.
Understand and apply modern asynchronous and reactive programming patterns.
Stay current with the latest features in Java concurrency, including Project Loom and the Flow API.
Gain practical experience with popular reactive libraries like RxJava or Project Reactor.
If you are a developer aiming to write more robust, faster, and more scalable Java code, this course is for you.
-
This advanced Java course is ideal for:
Experienced Java Developers: Looking to deepen their understanding of concurrent programming and build highly performant, scalable, and responsive applications.
Backend Developers: Working on high-throughput systems, microservices, or real-time applications where efficient resource utilisation and responsiveness are critical.
Architects & Technical Leads: Designing complex Java systems that require robust concurrency models and asynchronous processing capabilities.
DevOps Engineers: Seeking to understand the underlying concurrency mechanisms of Java applications for better monitoring and troubleshooting.
Anyone aiming to master modern Java concurrency patterns, including the latest features like Virtual Threads and Reactive Programming.
-
This Java Concurrency & Reactive Techniques course is available for private / custom delivery for your team - as an in-house face-to-face workshop at your location of choice, or as online instructor-led training via MS Teams (or your own preferred platform).
Get in touch to find out how we can deliver tailored training which focuses on your project requirements and learning goals.
-
Threads & Thread Synchronisation
Traditional Threads (Revisiting java.lang.Thread)
Thread Lifecycle
Synchronisation Mechanisms (synchronised keyword, wait(), notify(), notifyAll())
Volatile Keyword
Concurrency with java.util.concurrent
Executors and Thread Pools (ExecutorService, ThreadPoolExecutor, ScheduledExecutorService)
Callable and Future
Concurrency Control Mechanisms
Locks (ReentrantLock, ReadWriteLock)
Atomic Variables (AtomicInteger, AtomicLong, etc.)
Concurrent Collections (ConcurrentHashMap, CopyOnWriteArrayList, etc.)
Controlling Concurrency with java.util.concurrent Primitives
Conditions
Semaphores
CountDownLatch
CyclicBarrier
Exchanger
Asynchronous Programming with Futures and CompletableFutures
Background on Futures in Java
CompletableFutures in Java 8+
Creating and Completing CompletableFutures
Working with a Completable Future
Acting on Completion (thenApply, thenAccept, thenRun)
Combining Operations (thenCompose, thenCombine)
Composing CompletableFutures
Combining CompletableFutures
Waiting for CompletableFutures
Error Handling (exceptionally, handle)
CompletableFuture Timeouts and Delays
Java 9+ Process API Updates
Process updates in Java 9
Obtaining the PID
Process Handle
Obtaining Information on a Process
Accessing all Processes
Process onExit Handle
Project Loom: Virtual Threads (Java 21+)
Introduction to Project Loom
Understanding the need for Virtual Threads
Platform Threads vs. Virtual Threads
Creating and Managing Virtual Threads (Thread.ofVirtual())
Structured Concurrency (Introduction to StructuredTaskScope - if applicable and stable in target Java version)
Benefits of Virtual Threads for concurrency and throughput
Migration strategies for existing code
Reactive Programming Principles and Java Flow (Java 9+)
Introduction to Reactive Programming Concepts
The Reactive Manifesto
Understanding Asynchronous Data Streams
Backpressure
Java 9 Flow API (java.util.concurrent.Flow)
Flow API Overview
Publishers
Subscribers
Subscriptions
Processors
Implementing Custom Publishers and Subscribers
Bridging with other Reactive Libraries
Introduction to Reactive Libraries
This module provides in-depth coverage of a leading reactive programming library in the Java ecosystem. You are invited to select either Option #1 (Project Reactor) or Option #2 (RxJava) based on your project needs or interests - for instance, Reactor is popular with Spring Boot adopters.
Option 1: Project Reactor
Introduction to Reactive Programming Concepts.
What is Project Reactor? Flux vs Mono.
Reactive Streams Specification and Reactor.
Creating Reactive Sequences (Flux and Mono).
Subscribing to Sequences and Handling Signals (onNext, onError, onComplete).
Understanding Subscription and Backpressure.
Key Transformation Operators (map, flatMap, concatMap).
Filtering and Utility Operators (filter, doOn...).
Combining Operators (merge, concat, zip).
Error Handling Strategies (onErrorReturn, onErrorResume, retry).
Introduction to Schedulers and Concurrency Management.
Controlling Execution Context (publishOn, subscribeOn).
Backpressure Management Strategies in Reactor.
Hot vs Cold Reactive Sequences (and Reactor types like ConnectableFlux).
Testing Reactive Flows with StepVerifier.
Option 2: RxJava
Setting up RxJava
RxJava core concepts (Observables, Observers/Subscribers, Single, Maybe, Completable)
Creating Observables
Subscribing to Observables
OnNext, OnError and OnCompleted
Operators (Transformation, Filtering, Combination, etc.)
Pipes, Observable Operators and transformers
Connectable Observables
Subjects
Hot and Cold Observables
Back Pressure options in RxJava
Schedulers (Concurrency Management in Reactive Streams)
Integrating Flow API with Reactive Libraries
-
https://openjdk.org/install/ - Get the latest OpenJDK (recommended for modern Java features)
https://www.oracle.com/java/technologies/downloads/ - Get the Oracle Java JDK
https://maven.apache.org/download.cgi - Download Apache Maven (popular build tool)
https://gradle.org/install/ - Install Gradle (another popular build tool)
https://www.jetbrains.com/idea/ - Popular Java IDE (IntelliJ IDEA)
https://www.eclipse.org/downloads/ - Another popular development environment (Eclipse)
https://projectreactor.io/docs/core/release/reference/ - Project Reactor Reference Documentation
https://github.com/ReactiveX/RxJava/wiki - RxJava Wiki and Documentation
https://openjdk.org/projects/loom/ - Information on Project Loom (Virtual Threads)
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/package-summary.html - Java Concurrency API Documentation
https://www.reactive-streams.org/ - Reactive Streams Specification
Trusted by