Java Multithreading, Concurrency & Performance Optimization

5h 16m 23s
English
Paid
April 25, 2024

If you had your own jet plane, would you drive it to the grocery store, or fly it on a tour around the world? Today every computer and phone comes with immense computing power and multiple cores that allow for full parallelism. In this course you will go on a journey to learn all the fundamental tools you need to become a confident and successful multithreaded application developer. Using multithreading and concurrency we will learn to get the most out of our computer to truly make it fly!

More

Teaching Philosophy

The course is designed to teach you "how to fish". Instead of memorizing classes, libraries or Java APIs, we will learn the fundamentals of multithreaded programming, starting from the complete basics, all the way to the very advanced topics in multithreading.

All lectures include the right theory and are accompanied by practical examples from relevant fields such as:

  • User Interface applications 

  • Image Processing

  • Web Applications

  • Computational programs

  • And others

It's a practical course that is meant to save you time. Instead of filling hours of material, I hand picked the most important topics based on my practical experience.

Target Student for this Course

  • Students who already have some experience and basic knowledge in programming in Java.

  • Students who want to acquire multithreaded, parallel programming and concurrency skills, in a short period of time.

  • Students who are interested in performance optimizations and getting good foundation in the above mentioned topics. 

  • Students who want to take their career to the next level. Whether you are a

    • Newly graduate and you're looking to land a dream job.

    • A professional engineer who wants to become a better programmer and improve your skillset.

    • A freelancer who wants to develop his/her own project and is looking to learn how to write efficient multithreaded code. 

Short Bio

My passion towards multithreading and concurrency started in college where I worked on a highly scalable, distributed, B+ Tree research project, sponsored by IBM.

Later I worked as a Computer Architecture Engineer at Intel Corporation and as a Software Engineer in other companies where I developed many applications and features involving efficient and optimized multithreaded code to deliver real time video, audio and data - in education, healthcare, augmented reality and Ad Tech.

Today I am a Principal Software Engineer and Software Architect. Training and mentoring engineers on all levels is both my job and my passion.

We will learn

  • Operating Systems fundamentals and motivation for multithreading and concurrency.

  • The basics of multithreading - how to create threads in Java as well as communicate between threads in Java.

  • Performance considerations and design patterns of multithreaded  and parallel applications. Optimizing for latency or throughput.

  • Data sharing between threads in Java. All the pitfalls and challenges as well as the solutions and best practices.

  • Advanced lock-free algorithms and data structures for increased responsiveness and performance.

By the End of the Course

You will be able to

  • Write correct, responsive, and performant multithreaded applications in Java, for any purpose and scale.

  • Apply best practices to architect multithreaded applications, algorithms and libraries.

  • Become knowledgable in concurrency & parallel programming, which will help you in job interviews, in your daily work as an engineer, as well as in your personal projects.

Become an expert in Java Multithreading, Concurrency and Performance optimization today!

Requirements:
  • A Windows, Mac or Linux computer
  • Java Development Kit (JDK) 8 or above installed
  • Basic knowledge of programming in Java
Who this course is for:
  • Students who want to learn multithreaded programming and concurrency
  • Students who want to produce the highest quality and highest performance software
  • Engineers who want to take their professional career to new level, and become true experts
  • College students and newly graduates, who want to stand out from the crowd, and land their dream job

What you'll learn:

  • Build well designed & correct multithreaded applications in Java, with confidence.
  • Gain expert-level practical knowledge of modern software architecture & low level programming using Threads
  • Create high performance & responsive applications, clients will use and love
  • Learn to utilize your computer and Java language using Concurrency and Parallel programming

Watch Online Java Multithreading, Concurrency & Performance Optimization

Join premium to watch
Go to premium
# Title Duration
1 Motivation & Operating Systems fundamentals- Part 1 06:30
2 Operating Systems Fundamentals - Part 2 07:45
3 Threads Creation - Part 1, Thread Capabilities & Debugging 07:23
4 Threads Creation - Part 2. Thread Inheritance 08:36
5 Thread Termination & Daemon Threads 07:29
6 Joining Threads 08:27
7 Introduction to Performance & Optimizing for Latency - Part 1 09:43
8 Optimizing for Latency Part 2 - Image Processing 16:29
9 Optimizing for Throughput Part 1 05:21
10 Optimizing for Throughput Part 2 - HTTP server + Jmeter 12:37
11 Stack & Heap Memory Regions 08:00
12 Resource Sharing & Introduction to Critical Sections 11:06
13 Critical Section & Synchronization 07:40
14 Atomic Operations, Volatile & Metrics practical example 10:37
15 Race Conditions & Data Races 09:09
16 Locking Strategies & Deadlocks 11:41
17 ReentrantLock Part 1 - tryLock and interruptible Lock 09:22
18 ReentrantLock Part 2 - User Interface Application example 08:24
19 Reentrant Read Write Lock & Database Implementation 11:16
20 Semaphore - Scalable Producer Consumer implementation 08:47
21 Condition Variables - All purpose, Inter-Thread Communication 08:46
22 Objects as Condition Variables - wait(), notify() and notifyAll() 16:43
23 Introduction to Non-blocking, Lock Free operations 06:56
24 Atomic Integers & Lock Free E-Commerce 05:24
25 Atomic References, Compare And Set, Lock-Free High Performance Data Structure 13:47
26 Introduction to Blocking IO 13:25
27 Thread Per Task / Thread Per Request Model 12:43
28 Asynchronous, Non Blocking IO with Thread Per Core Model 12:39
29 Introduction to Virtual Threads - Project Loom 16:30
30 High Performance IO with Virtual Threads 11:20
31 Virtual Threads Best Practices 05:44
32 Distributed Systems, Big Data & Performance 06:04

Similar courses to Java Multithreading, Concurrency & Performance Optimization

Master Spring Boot 3 & Spring Framework 6 with Java

Master Spring Boot 3 & Spring Framework 6 with Javaudemy

Duration 37 hours 34 minutes 14 seconds
Data Structures and Algorithms: Deep Dive Using Java

Data Structures and Algorithms: Deep Dive Using Javaudemy

Duration 15 hours 53 minutes 4 seconds
Java Generics

Java Genericsamigoscode (Nelson Djalo)

Duration 1 hour 8 minutes 39 seconds