
Advanced Concurrency and Reactive Programming Course
Master the full spectrum of concurrent and reactive programming — from memory visibility and lock-free data structures to reactive operators and production hardening. This advanced course equips experienced engineers with the mental models, patterns, and tools needed to build high-throughput, fault-tolerant systems that perform under real-world load.
What your team will master:
Apply synchronisation primitives and locking strategies to eliminate critical concurrency hazards.
Design and select lock-based and lock-free concurrent data structures for high-throughput workloads.
Configure thread pools and async pipelines using executor frameworks, futures, and fork-join patterns.
Build reactive streams with transformation, filtering, and error-recovery operators for resilient data flows.
Control threading across reactive pipelines using schedulers, subscribeOn, and observeOn operators.
Implement circuit breakers, bulkheads, and rate limiters to harden reactive systems for production.
How your team learns in practice Advanced Concurrency and Reactive Programming Course
How your team practises Advanced Concurrency and Reactive Programming Course
Professionals from these companies study at Dedika









Course content
8 Chapters • 40 LessonsDuration between 4 and 360 hours (you decide)
Chapter 1HideHide detailsSee detailsConcurrency Fundamentals and Mental Models
Concurrency Fundamentals and Mental Models
Lesson 1 • Race Conditions and Atomicity
Identifies race conditions through check-then-act and read-modify-write patterns. Introduces atomicity as the core correctness requirement.
Lesson 2 • Processes, Threads, and Execution Units
Defines processes, threads, and lightweight fibres as distinct execution units. Establishes vocabulary used throughout the course.
Lesson 3 • Shared State and Memory Visibility
Explains how threads share heap memory and why CPU caches cause stale reads. Connects visibility problems to real data corruption bugs.
Lesson 4 • Concurrency Correctness Criteria
Defines linearisability, sequential consistency, and serialisability as formal correctness models. Grounds later lock and lock-free design decisions.
Lesson 5 • Deadlock, Livelock, and Starvation
Analyses the three main liveness failures using resource-allocation graphs. Provides detection heuristics applicable to any concurrent system.
Chapter 2HideHide detailsSee detailsSynchronisation Primitives and Locking Strategies
Synchronisation Primitives and Locking Strategies
Lesson 1 • Lock Granularity and Contention
Analyses coarse vs. fine-grained locking trade-offs using throughput and latency metrics. Introduces lock striping as a scalable contention-reduction technique.
Lesson 2 • Read-Write Locks and Condition Variables
Introduces shared-read/exclusive-write locks for read-heavy workloads. Pairs condition variables with mutexes for wait-notify coordination.
Lesson 3 • Semaphores and Barriers
Uses counting semaphores to bound resource pools and cyclic barriers to synchronise phases. Maps each primitive to its canonical use case.
Lesson 4 • Avoiding Common Locking Pitfalls
Catalogues lock inversion, nested lock acquisition, and lock leaks as recurring defects. Provides refactoring patterns to eliminate each pitfall.
Lesson 5 • Mutexes and Intrinsic Locks
Covers exclusive locking semantics and reentrant lock behaviour. Demonstrates correct lock acquisition and release patterns.
Chapter 3HideHide detailsSee detailsConcurrent Data Structures and Collections
Concurrent Data Structures and Collections
Lesson 1 • Immutability as a Concurrency Strategy
Demonstrates how immutable objects eliminate synchronisation entirely. Covers effective immutability, defensive copying, and persistent data structures.
Lesson 2 • Concurrent Queues and Deques
Covers blocking and non-blocking queue implementations for producer-consumer pipelines. Compares bounded vs. unbounded queue back-pressure behaviour.
Lesson 3 • Atomic Variables and CAS Operations
Explains compare-and-swap as the hardware primitive underlying lock-free algorithms. Builds atomic counters, references, and stamped references.
Lesson 4 • Thread-Safe Collection Wrappers
Examines synchronised wrappers and their compound-operation pitfalls. Motivates purpose-built concurrent collections over naive wrapping.
Lesson 5 • Concurrent Hash Maps and Skip Lists
Analyses segment-based and node-level locking in concurrent hash maps. Introduces skip lists as a lock-free sorted structure.
Chapter 4HideHide detailsSee detailsThread Pools and Task Execution Frameworks
Thread Pools and Task Execution Frameworks
Lesson 1 • Composable Async Pipelines
Chains dependent async computations using completable futures and continuation callbacks. Handles errors and fallbacks within the pipeline.
Lesson 2 • Executor Framework Architecture
Introduces the executor abstraction that decouples task submission from execution policy. Maps executor types to workload characteristics.
Lesson 3 • Futures, Callables, and Promises
Submits Callable tasks and retrieves results via Future, handling cancellation and timeout. Introduces Promise as the write side of a future.
Lesson 4 • Fork-Join and Work Stealing
Implements divide-and-conquer parallelism using the fork-join framework. Explains work-stealing scheduling and its throughput benefits.
Lesson 5 • Thread Pool Sizing and Tuning
Derives pool-size formulas for CPU-bound and I/O-bound tasks using Little's Law. Covers monitoring queue depth and thread utilisation.
Chapter 5HideHide detailsSee detailsReactive Programming Foundations
Reactive Programming Foundations
Lesson 1 • Observable and Observer Contract
Defines the observable sequence, subscription lifecycle, and observer callbacks. Establishes the push-based data flow model central to reactive programming.
Lesson 2 • Reactive Streams Specification
Covers the four reactive streams interfaces: Publisher, Subscriber, Subscription, and Processor. Explains demand signalling as the foundation of back-pressure.
Lesson 3 • Building a Minimal Reactive Library
Implements a toy observable, subscription, and map operator from scratch. Solidifies understanding of the contract before using production libraries.
Lesson 4 • Back-Pressure Strategies
Compares drop, buffer, and throttle strategies for handling faster producers. Selects the appropriate strategy based on data loss tolerance and latency goals.
Lesson 5 • Reactive Manifesto and Design Goals
Summarises responsiveness, resilience, elasticity, and message-driven design as reactive pillars. Connects each pillar to concrete system behaviours.
Chapter 6HideHide detailsSee detailsReactive Operators and Stream Composition
Reactive Operators and Stream Composition
Lesson 1 • Combination Operators
Merges, zips, and combines multiple streams into unified outputs. Explains timing semantics that determine when combined emissions occur.
Lesson 2 • Transformation Operators
Covers map, flatMap, concatMap, and switchMap for value and stream transformation. Distinguishes ordering and concurrency guarantees of each operator.
Lesson 3 • Multicasting and Sharing Streams
Converts cold observables to hot using publish, share, and replay operators. Controls subscription timing and replay buffer size.
Lesson 4 • Error Handling and Recovery Operators
Implements retry, retryWhen, onErrorReturn, and onErrorResume for resilient pipelines. Distinguishes recoverable from terminal errors in stream context.
Lesson 5 • Filtering and Windowing Operators
Applies filter, take, skip, distinct, and debounce to reduce stream volume. Introduces time-based and count-based windowing for batch processing.
Chapter 7HideHide detailsSee detailsSchedulers, Threading, and Reactive Concurrency
Schedulers, Threading, and Reactive Concurrency
Lesson 1 • Eliminating Blocking Code
Identifies blocking calls that stall reactive threads and wraps them in deferred or fromCallable. Applies I/O schedulers to isolate blocking work.
Lesson 2 • subscribeOn and observeOn Operators
Explains how subscribeOn sets the subscription thread and observeOn switches the observation thread. Demonstrates correct placement for upstream and downstream threading.
Lesson 3 • Scheduler Types and Responsibilities
Catalogues computation, I/O, single-thread, and trampoline schedulers by their intended workload. Maps each scheduler to the correct pipeline stage.
Lesson 4 • Reactive Integration with Async I/O
Bridges callback-based and future-based async APIs into reactive streams. Covers TCP, HTTP, and database async drivers as integration targets.
Lesson 5 • Context Propagation Across Threads
Propagates request-scoped context such as trace IDs and security tokens across scheduler boundaries. Prevents context loss in multi-threaded pipelines.
Chapter 8HideHide detailsSee detailsAdvanced Patterns and Production Hardening
Advanced Patterns and Production Hardening
Lesson 1 • Performance Profiling and Tuning
Profiles operator overhead, allocation rates, and thread contention using async profilers. Applies fusion, operator lifting, and pool tuning to reduce latency.
Lesson 2 • Observability and Metrics
Instruments reactive pipelines with latency histograms, error rates, and queue depth metrics. Connects metrics to alerting thresholds for production monitoring.
Lesson 3 • Testing Concurrent and Reactive Code
Uses virtual time schedulers, test subscribers, and deterministic concurrency tools to write reliable tests. Covers property-based testing for concurrent invariants.
Lesson 4 • Rate Limiting and Throttling
Applies token-bucket and leaky-bucket algorithms to cap emission rates. Prevents downstream overload while maintaining acceptable latency.
Lesson 5 • Resilience Patterns for Reactive Systems
Implements circuit breaker, bulkhead, and timeout patterns to contain failure propagation. Integrates each pattern into reactive operator chains.
Your valid completion certificate
This course is for you:
Backend engineers: struggling to eliminate intermittent bugs in multithreaded services.
Platform engineers: building high-throughput data pipelines that must handle backpressure.
Senior developers: ready to move beyond basic threading into production-grade concurrency.
Software architects: designing distributed systems that need fault-tolerant async communication.
Kotlin or Java developers: adopting reactive frameworks without a solid theoretical foundation.
Related Courses
FAQ
Who is Dedika?
Is the certificate valid in Australia?
Are the courses free?
What is the course workload?
What are the courses like?
How do the courses work?
What is the duration of the courses?
What is the cost or price of the courses?
What is an EAD or online course and how does it work?
PDF Course



















