All Courses

Master Java Multithreading Programming from Zero (Modern) – Free Udemy Courses

Master Java Multithreading Programming from Zero (Modern) – Free Udemy Courses

Learn Java threading programming using modern java techniques (Lambda’s & Streams). Hands-on Step by Step approach

What you’ll learn

Master Java Multithreading Programming from Zero (Modern) – Free Udemy Courses

  • 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

If the links does not work, contact us we will fix them