Java Multithreading and Parallel Programming Masterclass
Java Multithreading and Parallel Programming Masterclass, available at $64.99, has an average rating of 4.7, with 56 lectures, 3 quizzes, based on 46 reviews, and has 608 subscribers.
You will learn about Understand why Multithreading is a real advantage for any Java developer Understand the basic building blocks of multithreaded applications Understand when Multithreading can speed up the application and when it can't Understand the Operating System and the hardware implications of a multithreaded application Be able to see hands-on, relevant examples, deeply explained, for each concept that's being presented Be able to connect the concepts learned in this course with real-world projects This course is ideal for individuals who are Beginner Java Developers who want to enhance their skillset by learning multithreading and parallel programming or Java Developers who want to learn multithreading the right way, by following a well established step-by-step curriculum or Any developer with basic Java knowledge, who want to improve the performance of their applications by leveraging parallel programming or Computer Science / Engineering / PhD Students who want to learn multithreading from the ground It is particularly useful for Beginner Java Developers who want to enhance their skillset by learning multithreading and parallel programming or Java Developers who want to learn multithreading the right way, by following a well established step-by-step curriculum or Any developer with basic Java knowledge, who want to improve the performance of their applications by leveraging parallel programming or Computer Science / Engineering / PhD Students who want to learn multithreading from the ground.
Enroll now: Java Multithreading and Parallel Programming Masterclass
Summary
Title: Java Multithreading and Parallel Programming Masterclass
Price: $64.99
Average Rating: 4.7
Number of Lectures: 56
Number of Quizzes: 3
Number of Published Lectures: 56
Number of Published Quizzes: 3
Number of Curriculum Items: 59
Number of Published Curriculum Objects: 59
Original Price: $49.99
Quality Status: approved
Status: Live
What You Will Learn
- Understand why Multithreading is a real advantage for any Java developer
- Understand the basic building blocks of multithreaded applications
- Understand when Multithreading can speed up the application and when it can't
- Understand the Operating System and the hardware implications of a multithreaded application
- Be able to see hands-on, relevant examples, deeply explained, for each concept that's being presented
- Be able to connect the concepts learned in this course with real-world projects
Who Should Attend
- Beginner Java Developers who want to enhance their skillset by learning multithreading and parallel programming
- Java Developers who want to learn multithreading the right way, by following a well established step-by-step curriculum
- Any developer with basic Java knowledge, who want to improve the performance of their applications by leveraging parallel programming
- Computer Science / Engineering / PhD Students who want to learn multithreading from the ground
Target Audiences
- Beginner Java Developers who want to enhance their skillset by learning multithreading and parallel programming
- Java Developers who want to learn multithreading the right way, by following a well established step-by-step curriculum
- Any developer with basic Java knowledge, who want to improve the performance of their applications by leveraging parallel programming
- Computer Science / Engineering / PhD Students who want to learn multithreading from the ground
Intro
This course is the best online resource you need to become proficient in working with threads and correctly apply Multithreading techniques to your applications, in order to leverage the CPU capabilities of your machines and max out the application throughput.
The goal of this course is to make you deeply understand the multithreading concepts (that can be re-used in many other languages), applied and exemplified in Java, the language used by many large companies and more than 9 million developers around the world.
About myself
I wrote my first line of code 10 years ago when I was in highschool. I quickly got addicted by how easy you could build useful programs using C# and Windows Forms.
I followed the Computer Science University track where I managed to set the ground knowledge for anything related to Software Engineering (Algorithms, Data Structures, Operating Systems, Multithreading, Distributed Computing, Networking, and many other topics), and I finalized this amazing 6-year learning path by getting a Master’s Degree in Parallel and Distributed Systems where I built from the ground a custom Kubernetes Gang Scheduler optimised for running Spark Jobs.
Currently, I’m a Software Engineer focused on high-scale JVM-based development. I build code used by millions of people around the world.
Why I built this course?
Multithreading is an advanced topic for any developer. I saw many people struggling to understand things like:
-
How can I speed up the runtime of this code?
-
Is it possible to split this problem into multiple independent pieces?
-
How can I measure the performance of this code?
-
Why is my multithreaded code stuck? How can I debug it?
It was really hard for me too to understand some of those things, even if I had enough university background in this area.
But fortunately, after many years of working with threads, many trial and errors, many profiling sessions and books & articles read, I managed to deeply understand those critical concepts and use them properly in my daily job.
For those reasons, I thought that building a course where I expose my understanding on Multithreading, would definitely help other people to save time and avoid going into the same pitfalls that I went through.
This course is going to be continuously updated with new information in the multithreading field, but also with the relevant topics that you request in the Q&A section, so you’re buying a true learning asset, since you can use this course as a technical reference.
What is the content course?
This course is split into multiple chapters, each one exposing a major topic in Multithreading:
-
Chapter 1 – General Multithreading Concepts
-
In this chapter we’re going to learn the basics of Multithreading – threads, processes, concurrency, parallelism. This chapter is full of visual lectures, designed to provide a unique learning experience.
-
-
Chapter 2 – Thread Management
-
This is the first hands-on chapter where we’re going to learn how to create threads, how to use thread groups, daemon threads, but also how to build exception control flows, to avoid crashes due to unhandled exceptions.
-
-
Chapter 3 – Thread Synchronization – Part 1
-
This chapter goes into the main challenge when working with multiple threads, which is thread synchronization so that we get a predictable output of our application and avoid inconsistent behaviours.
-
We’re going to learn basic synchonization tools – locks, wait sets and notifications, read & write locks and semaphores
-
-
Chapter 4 – Thread Synchronization – Part 2
-
This chapter is a continuation of the previous one, where we’re going to tackle advanced synchronization tools, like Barriers and Phasers, but we’re also going to learn about deadlocks and cache coherency enforcement by the use of the volatile keyword.
-
-
Chapter 5 – Thread Reusability
-
We can’t create an infinite number of threads in our applications, because each thread needs some resources in order to be created, so for that reason we need to reuse threads.
-
This chapter describes the tools we have in Java to deal with thread reusability (Thread Pools) and it goes deep into how to work with them, manage performance, choose the right parameters (tuning) and many others.
-
-
Chapter 6 – Parallel Algorithms
-
In this chapter we’re going to see how can we improve the runtime of a couple of known algorithms through multithreading.
-
We’re going to learn the thinking process of breaking a problem into multiple pieces which can be processed in parallel, and finally merging the results to get the main output.
-
-
Chapter 7 – Famous Multithreading Problems
-
The first steps in Multithreading have been done many years ago, where famous computer scientists have tackled the problems which are know part of the Java Threading API.
-
In this chapter, we’re going to study a couple of those problems and get the thought process of their solution. This exercise is very valuable and contributes to the overall understanding of parallelism and synchronization.
-
-
Chapter 8 – Multithreading in Real World
-
This final chapter of this course tackles the connection between Multithreading and widely used frameworks, like Spring-Boot, JavaRx and JavaFX. We’re going to see how can we design a REST API in Spring Boot, which processes requests in an asynchronous way, leveraging multithreading.
-
We’re going to see how can we build parallel data flows with JavaRx2, and also how to decouple the UI updates from the background processing in JavaFx, which technically applies to mobile and desktop applications.
-
What are the requirements for this course?
-
Basic Java Knowledge (including Object Orientated Programming)
-
An IDE of your choice, ideally IntelliJ Idea Community Edition, but you can use any IDE where you can run plain Java code
-
Willingness to learn and an open-mind
Thank you for taking the time to look through this description and I’m looking forward to see you in the first lecture!
Course Curriculum
Chapter 1: Introduction
Lecture 1: Motivation
Lecture 2: How to take the most out of this course
Lecture 3: Course Prerequisites & Code Resources
Chapter 2: General Multithreading Concepts
Lecture 1: What is a Process?
Lecture 2: What is a Thread?
Lecture 3: Threads vs Processes
Lecture 4: Parallel vs Concurrent vs Asynchronous vs Non-Blocking
Lecture 5: Amdahl's Law
Chapter 3: Thread Management
Lecture 1: Thread Creation
Lecture 2: Thread Priorities and States
Lecture 3: Let's play with Thread Groups
Lecture 4: Daemon Threads and User Threads
Lecture 5: Thread Exception Handling
Lecture 6: Thread Local Variables and Race Conditions
Lecture 7: [Project] – Parallel Text File Processing
Chapter 4: Thread Synchronization – Part 1
Lecture 1: What is Thread Synchronization?
Lecture 2: The Synchronized keyword
Lecture 3: Wait Sets and Notifications (Producer Consumer)
Lecture 4: Understanding Locks with Parallel Vector Sum
Lecture 5: What are ReadWrite locks and Spin Locks?
Lecture 6: Producer Consumer with Condition Variables
Lecture 7: Let's Synchronize Jobs with Semaphores
Lecture 8: The Atomic Variables
Chapter 5: Thread Synchronization – Part 2
Lecture 1: Parallel Array Search with CountDownLatch
Lecture 2: Crushing Matrixes with Barriers
Lecture 3: Parallel Array Processing with Phasers
Lecture 4: Shift data between threads with Exchangers
Lecture 5: What is a Deadlock and how can we avoid it?
Lecture 6: The Volatile Keyword
Lecture 7: [Project] – Simulating a MapReduce Job with Threads – Part 1
Lecture 8: [Project] – Simulating a MapReduce Job with Threads – Part 2
Chapter 6: Thread Reusability
Lecture 1: Why we should reuse threads?
Lecture 2: Introducing the ThreadPoolExecutor class
Lecture 3: Work queues for ThreadPools
Lecture 4: Handling exceptions in ThreadPools
Lecture 5: Managing rejected tasks in a ThreadPool
Lecture 6: Monitoring the Performance of a ThreadPool
Lecture 7: Scheduling tasks with ScheduledThreadPoolExecutor
Lecture 8: Let's play with ForkJoinPools
Lecture 9: Creating Thread Pools with Executors
Lecture 10: How to properly size a Thread Pool?
Chapter 7: Parallel Algorithms
Lecture 1: Bringing parallelism to Quick Sort
Lecture 2: Can we improve Binary Search through Multithreading?
Lecture 3: Parallel Matrix Multiplication – The naive way
Lecture 4: Parallel Matrix Multiplication – The optimal way
Chapter 8: Famous Multithreading Problems
Lecture 1: Dining Philosophers Problem
Lecture 2: Readers-Writers Problem
Lecture 3: Sleeping Barber Problem
Lecture 4: No-Starve Mutex Problem
Chapter 9: Multithreading in Real World
Lecture 1: How can we see what's happening inside a JVM?
Lecture 2: Introducing Spring Boot Framework (in a nutshell)
Lecture 3: Running Asynchronous Workloads on Spring Boot
Lecture 4: Introducing RxJava framework (in a nutshell)
Lecture 5: Building Parallel Data Pipelines with RxJava2
Lecture 6: Unblocking the UI through Multithreading (with JavaFX)
Chapter 10: Closing Notes
Lecture 1: Links to resources
Instructors
-
Cosmin Ionita
Senior Software Engineer
Rating Distribution
- 1 stars: 0 votes
- 2 stars: 0 votes
- 3 stars: 3 votes
- 4 stars: 7 votes
- 5 stars: 36 votes
Frequently Asked Questions
How long do I have access to the course materials?
You can view and review the lecture materials indefinitely, like an on-demand channel.
Can I take my courses with me wherever I go?
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don’t have an internet connection, some instructors also let their students download course lectures. That’s up to the instructor though, so make sure you get on their good side!
You may also like
- Top 10 Language Learning Courses to Learn in November 2024
- Top 10 Video Editing Courses to Learn in November 2024
- Top 10 Music Production Courses to Learn in November 2024
- Top 10 Animation Courses to Learn in November 2024
- Top 10 Digital Illustration Courses to Learn in November 2024
- Top 10 Renewable Energy Courses to Learn in November 2024
- Top 10 Sustainable Living Courses to Learn in November 2024
- Top 10 Ethical AI Courses to Learn in November 2024
- Top 10 Cybersecurity Fundamentals Courses to Learn in November 2024
- Top 10 Smart Home Technology Courses to Learn in November 2024
- Top 10 Holistic Health Courses to Learn in November 2024
- Top 10 Nutrition And Diet Planning Courses to Learn in November 2024
- Top 10 Yoga Instruction Courses to Learn in November 2024
- Top 10 Stress Management Courses to Learn in November 2024
- Top 10 Mindfulness Meditation Courses to Learn in November 2024
- Top 10 Life Coaching Courses to Learn in November 2024
- Top 10 Career Development Courses to Learn in November 2024
- Top 10 Relationship Building Courses to Learn in November 2024
- Top 10 Parenting Skills Courses to Learn in November 2024
- Top 10 Home Improvement Courses to Learn in November 2024