Master Java Multithreading Programming from Zero (Modern)

Go to class
Write Review

Free Online Course: Master Java Multithreading Programming from Zero (Modern) provided by Udemy is a comprehensive online course, which lasts for 9 hours worth of material. The course is taught in English and is free of charge. Master Java Multithreading Programming from Zero (Modern) is taught by Syed Ahmed.

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

    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