Skip to main content
CF

Java Multithreading, Concurrency & Performance Optimization

5h 16m 23s
English
Paid

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!

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

About the Author: Udemy

Udemy thumbnail

Udemy is the largest open marketplace for online courses on the internet. Founded in 2010 by Eren Bali, Oktay Caglar, and Gagan Biyani and headquartered in San Francisco, the company went public on the Nasdaq in 2021 under the ticker UDMY. The platform hosts well over two hundred thousand courses across software development, IT and cloud, data science, design, business, marketing, and creative skills, taught by tens of thousands of independent instructors. Roughly seventy million learners use it worldwide, and the corporate arm — Udemy Business — supplies a curated subset of that catalog to enterprise customers.

Because Udemy is a marketplace rather than a single editorial publisher, the catalog is uneven by design. The strongest material lives in the long-form, project-based courses authored by working engineers — full-stack JavaScript, React, Node.js, Python data science, AWS, Docker and Kubernetes, mobile development with Flutter and React Native, and cloud certification preparation. The CourseFlix listing under this source is the slice of that catalog that has been mirrored here for offline-friendly viewing, organized by topic and updated as new releases land. Pricing on Udemy itself swings dramatically with the site's near-permanent sales, which is why the platform is best treated as a deep reference catalog: pick instructors with strong reviews and a track record of updating their material rather than buying on the headline price alone.

Watch Online 32 lessons

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 32 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: Motivation & Operating Systems fundamentals- Part 1
All Course Lessons (32)
#Lesson TitleDurationAccess
1
Motivation & Operating Systems fundamentals- Part 1 Demo
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
Unlock unlimited learning

Get instant access to all 31 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription

Related courses

Frequently asked questions

What are the prerequisites for enrolling in this course?
The course does not explicitly list prerequisites, but a foundational understanding of Java programming and familiarity with basic concepts in operating systems would be beneficial. Early lessons cover operating systems fundamentals, which suggests that some prior knowledge in this area might help in grasping the more advanced topics of multithreading and concurrency discussed later in the course.
What types of projects will I work on during the course?
Throughout the course, you will engage with practical examples such as optimizing image processing for latency, implementing an HTTP server with Jmeter for throughput optimization, and developing a lock-free e-commerce application. These projects are designed to apply multithreading, concurrency, and performance optimization techniques in real-world scenarios.
Who is the target audience for this course?
The course is aimed at Java developers who want to enhance their skills in multithreaded application development. It is suitable for those interested in improving application performance using concurrency and parallelism. Professionals dealing with distributed systems and big data could also benefit from the lessons on high-performance IO and virtual threads.
How does this course compare in depth and scope to other similar courses?
This course provides a thorough exploration of multithreading and concurrency in Java, covering topics from basic thread operations to advanced concepts like non-blocking operations and virtual threads. It stands out for its focus on performance optimization, including practical examples with image processing and HTTP servers, which may not be covered in detail in all similar courses.
What specific tools or platforms are covered in the course?
The course covers tools and concepts integral to Java concurrency, such as ReentrantLock, Reentrant Read Write Lock, Semaphores, and Atomic operations. It also delves into performance testing using Jmeter, and explores new capabilities with Project Loom's virtual threads, providing a comprehensive toolkit for multithreaded application development.
What topics are explicitly not covered in this course?
The course does not explicitly cover non-Java programming languages or frameworks for multithreading and concurrency. It is focused on Java-specific tools and techniques, so students seeking knowledge on concurrency in other programming environments might need to look for additional resources.
What is the expected time commitment for completing the course?
While the exact runtime of the course is not specified, it consists of 32 lessons. Time commitment will vary based on individual learning pace and background. Given the depth and breadth of topics, students might expect to invest several weeks if devoting a few hours each week to complete the course, especially when considering time for practical projects and exercises.