What you'll learn:
- Learn to write code that provides faster results using the modern apis in Java
- Learn to write Asynchronous/Parallel Programming code using Functional Style APIs
- Learn to write parallel programming code using ParallelStreams
- Learn to write Asynchronous code using Completablefuture
- Learn to write code that uses all the cores in your machine
- Techniques and patterns that uses the modern concurrency apis to improve the overall performance of the code
- Concurrency vs Parallelism
This course is structured to give you the theoretical and coding experience writing parallel and asynchronous code using ParallelStreams and CompletableFuture. You will become very Fluent in writing Asynchronous/Parallel Code in Java once you complete this course.
If you are looking forward to writing High Performant Java code then this is the right course for you. This course covers the latest features that are available in Modern Java that helps you write fast performing code.
This course explicitly covers the following APIs in Modern Java:
ParallelStreams
CompletableFuture
Getting Started with Parallel and Asynchronous programming
In this section, I will explain about the need to learn about the Paralleland Asynchronous programming concepts in todays software development
Briefly talks about the Evolution of Concurrency APIs in Java
Explain about the difference between the Concurrency and Parallelism
Course Project SetUp
In this section, we will set up the base project for the whole course.
Threads, Future, ForkJoin FrameWork, and its Limitations
In this section, I will explain about Threads, FutureAPI, ForkJoin FrameWork and its limitations
I will show a demonstration of all these concepts using code examples.
The limitations that are covered in the course sets the stage for ParallelStreams and CompletableFuture API
Getting started with Parallel Streams
In this section, I will introduce you all to parallel streams and implement a simple example using Parallel Streams
Introduction to Streams API and ParallelStreams
Implement a simple example using ParallelStreams
Write unit tests to test the ParallelStreams using JUnit5
Build Retail Checkout Application using Parallel Streams
In this section, we will build a simple Backend Retail Checkout application using Parallel Streams
Parallel Streams - Under the hood
In this section, I will cover the internals of parallel streams.
I will explain about how ParallelStreams work under the hood
Compare the performance of different collections when it's used against the ParallelStreams
Usage of Collect vs Reduce terminal operators in Streams API and Parallel Streams
Operators that can cause poor performance when it's used against ParallelStreams
Parallel Streams - Threading Model & Common ForkJoin Pool
In this section, I will explain about the execution engine behind the parallel Streams
Covers the Threading model that's utilized behind the scenes by ParallelStreams
Configuring the ThreadPool for Faster Performance
Parallel Streams - Summary
This section summarizes everything that's discussed above that's related to ParallelStreams
Covers the scenarios on "when to use/when not to use" ParallelStreams
CompletableFuture
In this section, I will introduce you all to the CompletableFuture API
Exploring CompletableFuture Functions
In this section, I will code and explore the functions that are part of the CompletableFuture API
Explore some of the key functions that are part of the CompletableFuture API
Write unit tests to test the CompletableFuture using JUnit5
Build a ProductService application using CompletableFuture
In this section, we will implement the ProductService example using CompletableFuture
This section will give you all an idea about how to use CompletableFuture in a real-world scenario
Combining Streams and CompletableFuture
In this section, I will show you the techniques to combine Streams with CompletableFuture.
I will explore this by adding an enhancement to the ProductService which is the InventoryService
Explore the different options available to integrate Streams API with CompletableFuture
Exception Handling/Recovery in CompletableFuture
In this section, I will introduce you to to the techniques/options that are to handle/recover exceptions using CompletableFuture
I will explain and cover different exception handling and recovery techniques that are available in CompletableFuture
handle()
exceptionally()
whenComplete
I will compare and explain the difference of behaviors between them and provide recommendation on using different handlers for different use cases.
Implement Exception Handling/Recovery in ProductService
In this lecture, I will show you techniques to implement the exception handling techniques in our ProductService
Implement the exception handling and recovery technique in ProductInfoService, ReviewService and InventoryService
CompletableFuture & ThreadPool
In this section, I will cover the ThreadPool and the different options that are available to use with CompletableFuture
I will cover the default CommonForkJoin ThreadPool thats used to execute the CompletableFuture
I will cover the techniques to use a Custom ThreadPool that can be used to execute the CompletableFuture
Threads and Async Overloaded Methods in CompletableFuture
I will cover the threads that are used to execute CompletableFuture
I will show the technique to use Async() methods that's part of the CompletableFuture API to change the execution of threads in the CompletableFuture Pipeline
Build RestFul API Client using Spring WebClient and CompletableFuture
In this section, I will build a restful api client using Spring WebClient and Integrate with CompletableFuture to improve the performance of the api calls.
I will code and demonstrate how to use Spring WebClient to build a rest client
I will code and demonstrate the technique to integrate RestAPI calls withCompletableFuture to improve the overall performance of the code.
Handle Multiple CompletableFutures - anyOf(), allOf()
In this section, I will code and explain about the techniques to handle multiple CompletableFutures.
I will code and explore the allOf() function thats part of the CompletableFuture API
I will code and explore the anyOf() function thats part of the CompletableFuture API
By the end of this course, you will have a complete understanding of ParallelStreams and CompletableFuture and how to use them in your projects.