Master Java Multithreading Programming from Zero (Modern)

Learn Java threading programming using modern java techniques (Lambda's & Streams). Hands-on Step by Step approach
Rating: 4.3 out of 5 (162 ratings)
14,319 students
You will learn about multi-threading in java, basic and advanced concepts
You will learn about parallel programming with Thread Class
You will learn about parallel programming with Runnable Interface
You will understand the difference between sequential and parallel processing
You will learn how to wait for completion of thread
You will understand the difference between volatile and non-volatile variables
You will understand the difference between DeadLock and LiveLock
You will learn about synhronizaton
You will understand when to use synchronized block and synchronized methods
You will implement examples of Wait, Notify and NotifyAll
You will understand when to call Wait Notify and NotifyAll
You will understand Locks
You will understand semaphore
You will learn about Executor and Executor thread pool
You will learn the difference between Callable and Runnable
You will understand how to get the returned values from callable
You will learn about Concurrent Utilities such as Latch, Cyclic Barrier
You will learn about Blocking Queues, such as Array Blocking Queue, Delay Queue, Linked Blocking Queue, Priority Blocking Queue and Synchronous Queue
You will understand the difference b/w traditional and concurrent collections
You will learn about concurrent collections such as HashMap and Navigable Map
You will learn about basic operation of Stream API
You will learn about Numeric Streams
You will understand the Stream Parallel Operation
You will learn about Fork-Join Framework


  • No
  • You should be familiar with basic java concepts


******* Course Overview *******

Welcome to this Amazing course on Java Multi-threading programming. 

The course will guide you through the important aspects of multi-threading in java. 

The course will provide an in-depth understanding of Threading and Parallel programming in java using modern java techniques and syntax

We will be building real world java threading applications using modern java technology like Lambda's and Streams

The course is for beginners are well as for experienced programmers

Each of my courses come with:

Amazing Hands-on Step By Step Learning Experiences

Real Implementation Experience

The below are the list of modules covered in this course.

***************Course details**********************

Section 1:Introduction

Step-01: Introduction

Step-02: Thread Introduction

Step-03: Java Development Kit Installation Overview

Step-04: Installing Intellij IDEA for Windows

Step-05: IntelliJ IDEA Configuration

Step-04: Git Repository Link

Step-05: Development Environment Setup - Import Code

Section 2:Multi-Threading Basics

Step-01: Sequential Processing

Step-02: Parallel Programming with Thread Class

Section 3:Lambda Expressions

Step-01: What is Lambda

Step-02: Lambda Expression (Part 1)

Step-03: Lambda Expression (Part 2)

Step-04: Runnable Example With Lambda

Step-05: Comparator Example With Lambda

Step-06: Callable Example With Lambda

Section 4:Multi-Threading Basics (Part 2)

Step-01: Parallel Programming with Runnable Interface

Step-02: Joins

Step-02: Volatile

Step-04: DeadLock And LiveLock

Step-05: Synchronization

Step-06: Synchronized Methods

Step-07: Synchronized Blocks

Step-08: Wait, Notify, NotifyAll

Step-09: Locks

Step-10 Semaphore

Step-11: Executor

Step-11: Executor With Runnable and Callable

Step-13: Callable & Future

Section 5:Concurrent Utilities

Step-01: CountDownLatch

Step-02: Cyclic Barrier

Step-03: Blocking Queue

Step-04: Array Blocking Queue

Step-05: Delay Queue

Step-06: Linked Blocking Queue

Step-07: Priority Blocking Queue

Step-08: Synchronous Queue

Section 6:Concurrent Collections

Step-01: Difference b/w Traditional & Concurrent Collections

Step-02: Concurrent HashMap

Step-03 Navigable Map

Section 7:Functional Interfaces and Lambdas (Lambda Part 2)

Step-01: Functional Interfaces

Step-02: Consumer Functional Interface (Part 1)

Step-03: Consumer Functional Interface (Part 2)

Step-04: IntConsumer, LongConsumer, DoubleConsumer

Step-04: BiConsumer Functional Interface

Step-05: BiConsumer Functional Interface (Part 2)

Step-06: Predicate Functional Interface (Part 1)

Step-07: Predicate Functional Interface (Part 2)

Step-08: IntPredicate, LongPredicate, DoublePredicate

Step-09: Predicate & BiConsumer

Step-10: BiPredicate Functional Interface

Step-11: Function (Part 1)

Step-12: Function (Part 2)

Step-13: BiFunction

Step-14: Unary Operator

Step-15: Binary Operator

Step-16: Supplier

Step-17: Method Reference (::)

Step-18: Examples of Method Reference

Step-19: Convert to Method Reference

Step-20: Constructor Reference

Section 8:Lambda Variable Scope

Step-01: Variable Scope, Final & Effectively Final

Section 9: RealWorld MultiThreading Example Using Lambda

Step-01: Bank Transfer Example

Section 10:Stream

Step-01: Stream Introduction (Part 1)

Step-02: Stream Introduction (Part 2)

Step-03: Inside Streams

Step-04: Collections vs Streams

Step-05: Debugging Stream

Section 11:Stream Operations

Step-01: map()

Step-02: flatMap()

Step-03: distinct(), count(), sorted(), allMatch()...

Step-04: Customized sort using comparator

Step-05: filter()

Step-06: reduce() (Part 1)

Step-07: reduce (Part 2)

Step-08: map + filter + reduce

Step-09: max() with stream and reduce

Step-10: min() with stream and reduce

Step-11: limit() and skip()

Step-12: findAny() and findFirst()

Section 12: Stream Generators

Step-01: Generating Stream with of(), iterate(), generate()

Section 13:Numeric Streams

Step-01: Introduction

Step-02: IntStream

Step-03: LongStream

Step-04: DoubleStream

Step-04: sum(), max(), min(), average()

Step-05: Boxing, Unboxing

Step-06: mapToObj(), mapToLong, mapToDouble()

Section 14:Collectors Operations

Step-01: joining

Step-02: counting()

Step-03: mapping()

Step-04: minBy(), maxBy()

Step-05: summingInt(), averagingInt()

Step-06: groupingBy (Part 1)

Step-07: groupingBy (Part 2)

Step-08: groupingBy (Part 3)

Step-10: maxBy(), minBy(), collectingAndThen(), summarizingInt()

Step-11: partitioningBy()

Section 15:Parallel Streams

Step-01: Introduction to Parallel Streams

Step-02: Sequential vs Parallel Performance (Part 1)

Step-03: Sequential vs Parallel Performance (Part 2)

Section 16:Fork-Join

Step-01: Fork-Join Framework Introduction

Step-02: Fork Join Example

Section 17:References

Section 18:Dining Philosopher Problem

Step-01: Dining Philosopher Problem Solution

Who this course is for:

  • Anyone who wish to learn about Java Multi-Threading
  • Anyone who want to learn Step by Step with a Hands-On Approach
  • Anyone who wants to learn how to build enterprise application using Mutli-Threaded programming in Java

Course content

13 sections • 61 lectures • 8h 42m total length
  • Step-01: Introduction
  • Step-02: Thread Introduction
  • Step-03: Java Development Kit Installation Overview on Windows
  • Step-04: Installing Intellij IDEA for Windows
  • Step-05: Java Development Kit Installation Overview on Mac
  • Step-06: Installing Intellij IDEA on Mac
  • Step-05: IntelliJ IDEA Configuration
  • Step-04: Git Repository Link
  • Step-05: Development Environment Setup - Import Code


Principal Engineer
Syed Ahmed
  • 4.4 Instructor Rating
  • 708 Reviews
  • 24,271 Students
  • 2 Courses

I'm Syed Ahmed, a Principal Engineer with 16 years of experience in Java Programming. I'm Java Certified Programmer and Java Certified Developer. I have 16 years of experience in designing complex solutions.

I live in one of the suburbs or Chicago and am a graduate of IIT.

I have special interests towards cloud technologies and cloud native solutions like kubernetes and Dockers. I am passionate about learning new technology and teaching.

I have extensive experience in developing, architecting, designing and implementing solutions on AWS