Master Java Multithreading Programming from Zero (Modern)

******* 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



