Choose your language
Advanced Concurrency & Reactive Programming Course
More than 2 million learners worldwide

Advanced Concurrency & 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.

Dedika for businesses

What you will learn:

  • Apply synchronization 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 asynchronous 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 you study in practice Advanced Concurrency & Reactive Programming Course

How you practise Advanced Concurrency & Reactive Programming Course

For companies looking to train their teams

With Dedika for Businesses, the course includes exercises and examples tailored to your own business and the specific needs of your company.

Click here

Course content

8 Chapters • 40 LessonsDuration between 4 and 360 hours (you decide)

Chapter 1See details

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 linearizability, sequential consistency, and serializability 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 2See details

Synchronization Primitives and Locking Strategies

  • Lesson 1 • Lock Granularity and Contention

    Analyses coarse versus 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 3See details

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 versus 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 4See details

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 5See details

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 6See details

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 7See details

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 8See details

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.

Certification

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.

What our students say

Your lessons are perfect. I purchased the one-year package and finally have the opportunity to follow various topics of my interest without needing to change platforms... I'm grateful for everything you do, I've already recommended you to other people...
Giulio Carlo
Giulio CarloDigital Marketing Student
I like how the lessons are straight to the point and how I can change chapters and skip content I don't need.
Mariana Ferres
Mariana FerresPhotography Student
I like the content and the way videos are presented and transcribed, which speeds up the process!
Luciana Alvarenga
Luciana AlvarengaNail Design Student
The platform is fast, simple to use. The diversity of content and complementary videos help a lot with learning.
André Felipe
André FelipePrompt Engineering Student

Top trainings

FAQs

Who is Dedika?

Is the certificate valid in Pakistan?

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