What you'll learn:
- 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
******* 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