• Professional Development
  • Medicine & Nursing
  • Arts & Crafts
  • Health & Wellbeing
  • Personal Development

Course Images

Java Multithreading and Parallel Programming Masterclass

Java Multithreading and Parallel Programming Masterclass

  • 30 Day Money Back Guarantee
  • Completion Certificate
  • 24/7 Technical Support

Highlights

  • On-Demand course

  • 9 hours 7 minutes

  • All levels

Description

Enhance your coding skill set by learning Java multithreading and parallel programming. Figure out common problems such as debugging codes, splitting a problem into multiple independent pieces, and measuring the runtime and performance of your code. Save time and avoid going into the same pitfalls while learning multithreading.

Multithreading is an advanced topic for any developer, and they struggle to understand many allied concepts related to it. The goal here is to make you understand in depth the multithreading concepts, applied and exemplified in Java. The course starts with the basics of multithreading-threads, processes, concurrency, and parallelism. Then you will go through thread management concepts. After that, you will learn about thread synchronization and look at synchronization tools such as locks, wait sets and notifications, read and write locks and semaphores, barriers and phasers, and deadlocks and cache coherency enforcement. Next, you will explore tools in Java to deal with thread reusability, manage performance, choose the right parameters (tuning), and many others. Next, you will see how to improve the runtime of a couple of known algorithms through multithreading. After that, you will study a couple of problems and their solution on Java Threading API to understand parallelism and synchronization. Finally, you will look at the connection between multithreading and widely used frameworks, such as Spring Boot, JavaRx, and JavaFX. By the end of this course, you will understand multithreading in detail, get hands-on experience in Java, and learn to improve the performance of the app with multithreading. All the resource files are added to the GitHub repository at: https://github.com/PacktPublishing/Java-Multithreading-and-Parallel-Programming-Masterclass

What You Will Learn

Understand why multithreading is a real advantage for any Java developer
Understand the basic building blocks of multithreaded applications
Learn when multithreading can speed up the application and when it can't
Look at the OS and hardware implications of a multithreaded application
Leverage and connect the concepts learned with real-world projects
See the connection between multithreading and widely used frameworks

Audience

This course is ideal for beginner Java developers who want to enhance their skillset by learning multithreading and parallel programming the right way.

Any developer with basic Java knowledge (including Object-Oriented Programming), who wants to improve the performance of their applications by leveraging parallel programming, and who wants to learn multithreading from scratch can gain a lot from this course.

Basic Java OOP knowledge (classes, interfaces, methods), IntelliJ IDEA, and Java 15 (JDK) are the only requirements to get started.

Approach

This is a well-structured, visually appealing and step-by-step course split into multiple sections, each one exploring a major topic in multithreading and providing a unique learning experience. 90% of the course contains hands-on, practical examples along with projects, exercises, and quizzes. You will also see tools and popular Java frameworks used in the industry to understand real-world implications.

Key Features

A well-defined course on multithreading with all requisite resources and materials * Complete hands-on and visually engaging lectures along with projects and real-world connections * Get to see relevant and highly practical examples, and each topic is explained from scratch

Github Repo

https://github.com/PacktPublishing/Java-Multithreading-and-Parallel-Programming-Masterclass

About the Author
Cosmin Ionita

Cosmin Ionita is a software engineer with over ten years of experience in developing enterprise-grade applications. He is based in Bucharest, Romania. He is a self-learner, truly passionate about technology, focused on gaining new skills, building outstanding professional relationships, and understanding the underlying concepts of the technologies he interacts with. His expertise revolves around JVM-based applications and surrounding systems (or techniques) for container management, deployment workflows, monitoring and alerting, performance optimization, code quality, resource efficiency, and many others.

Course Outline

1. Introduction to the Course

1. Course Overview

This video provides an overview of the course.

2. How to Get the Most Out of This Course

This video provides some insights on how to get the most out of this course.

3. Course Prerequisites and Code Resources

This video talks about the course prerequisites and code resources.

2. General Multithreading Concepts

1. What Is a Process?

This video talks about process in detail.

2. What Is a Thread?

This video explains about a thread.

3. Threads Versus Processes

This video demonstrates the difference between threads versus processes.

4. Parallel Versus Concurrent Versus Asynchronous Versus Non-Blocking

This video explains the difference between parallel versus concurrent versus asynchronous versus non-blocking concepts.

5. Amdahl's Law

This video explains Amdahl's Law.

3. Thread Management

1. Thread Creation

This video explains how to create a thread.

2. Thread Priorities and States

This video demonstrates thread priorities and states.

3. Let's Play with Thread Groups

This video helps you explore and plays around with thread groups.

4. Daemon Threads and User Threads

This video explains about Daemon threads and user threads.

5. Thread Exception Handling

This video explains thread exception handling.

6. Thread Local Variables and Race Conditions

This video talks about thread local variables and race conditions.

7. Project - Parallel Text File Processing

This is a project-based video on parallel text file processing.

4. Thread Synchronization - Part 1

1. What Is Thread Synchronization?

This video explains thread synchronization in detail.

2. The Synchronized keyword

This video demonstrates the Synchronized keyword.

3. Wait Sets and Notifications (Producer Consumer)

This video talks about wait sets and notifications (producer consumer).

4. Understanding Locks with Parallel Vector Sum

This video helps in understanding locks with parallel vector sum.

5. What Are Read/Write locks and Spin Locks?

This video explains about read/write locks and spin locks.

6. Producer Consumer with Condition Variables

This video talks about producer consumer with condition variables.

7. Let's Synchronize Jobs with Semaphores

This video demonstrates synchronizing jobs with Semaphores.

5. Thread Synchronization - Part 2

1. Parallel Array Search with CountDownLatch

This video helps in searching for a parallel array with CountDownLatch.

2. Crushing Matrixes with Barriers

This video showcases crushing matrixes with barriers.

3. Parallel Array Processing with Phasers

This video explains parallel array processing with phasers.

4. Shift Data Between Threads with Exchangers

This video talks about shifting data between threads with Exchangers.

5. What Is a Deadlock and How Can We Avoid It?

This video explains about the Deadlock situation and how it can be avoided.

6. The Volatile Keyword

This video explains about the Volatile keyword.

7. [Project] - Simulating a MapReduce Job with Threads - Part 1

This is the first of the two-part project-based video on simulating a MapReduce job with threads.

8. [Project] - Simulating a MapReduce Job with Threads - Part 2

This is the second of the two-part project-based video on simulating a MapReduce job with threads.

6. Thread Reusability

1. Why We Should Reuse Threads

This video explains why you should reuse threads.

2. Introducing the ThreadPoolExecutor Class

This video helps in introducing the ThreadPoolExecutor class.

3. Work Queues for ThreadPools

This video talks about work queues for ThreadPools.

4. Handling Exceptions in ThreadPools

This video demonstrates handling exceptions in ThreadPools.

5. Managing Rejected Tasks in a ThreadPool

This video helps in managing rejected tasks in a ThreadPool.

6. Monitoring the Performance of a ThreadPool

This video explains monitoring the performance of a ThreadPool.

7. Scheduling Tasks with ScheduledThreadPoolExecutor

This video helps in scheduling tasks with ScheduledThreadPoolExecutor.

8. Let's Play with ForkJoinPools

This video explores and plays around with ForkJoinPools.

9. Creating Thread Pools with Executors

This video helps in creating thread pools with Executors.

10. How to Properly Size a Thread Pool

This video explains how to properly size a thread pool.

7. Parallel Algorithms

1. Bringing Parallelism to Quick Sort

This video is about bringing parallelism to Quick Sort.

2. Can We Improve Binary Search Through Multithreading?

This video dives deep to help you understand if we can improve binary search through multithreading.

3. Parallel Matrix Multiplication - The Naive Way

This video demonstrates the multiplication of a parallel matrix in the naive or basic way.

4. Parallel Matrix Multiplication - The Optimal Way

This video demonstrates the multiplication of a parallel matrix in the optimal way.

8. Famous Multithreading Problems

1. Dining Philosophers Problem

This video demonstrates the dining Philosophers Problem.

2. Readers-Writers Problem

This video demonstrates the Readers-Writers Problem.

3. Sleeping Barber Problem

This video talks about the Sleeping Barber Problem.

4. No-Starve Mutex Problem

This video explains the No-Starve Mutex Problem.

9. Multithreading in the Real World

1. How Can We See What's Happening Inside a JVM?

This video demonstrates how we can see what's happening inside a JVM (Java Virtual Machine).

2. Introducing Spring Boot Framework (In a Nutshell)

This video helps in introducing you to the Spring Boot framework (in a nutshell).

3. Running Asynchronous Workloads on Spring Boot

This video demonstrates running asynchronous workloads on Spring Boot.

4. Introducing RxJava Framework (In a Nutshell)

This video helps in introducing the RxJava framework (in a nutshell).

5. Building Parallel Data Pipelines with RxJava2

This video demonstrates building parallel data pipelines with RxJava2.

6. Unblocking the UI Through Multithreading (With JavaFX)

This video helps in unblocking the UI through multithreading (with JavaFX).

Course Content

  1. Java Multithreading and Parallel Programming Masterclass

About The Provider

Packt
Packt
Birmingham
Founded in 2004 in Birmingham, UK, Packt’s mission is to help the world put software to work in new ways, through the delivery of effective learning and i...
Read more about Packt

Tags

Reviews