• 12 hours
  • Hard

Free online content available in this course.



Got it!

Last updated on 11/8/22

Course introduction

Do you write Java apps that process your data, one step at a time? How would your applications cope if you scaled up the volume of data which they had to process? Wouldn't it be great if you could solve different parts of your hard application problems all at the same time? You can! By practicing the art of concurrent programming! 

I will guide you on a journey through Java's powerful and proven framework for concurrency, which is a first choice for companies concerned with reliable high-performance computing. I'll show you how to deconstruct hard problems into independent tasks and solve them concurrently!

In this course, you'll use many of the latest features in Java's concurrency framework:

  • In Part 1, we'll explore the differences between parallelism and concurrency.  You'll learn how to use parallel streams, thread pools, and concurrency primitives. 

  • In Part 2, we'll look at industry-standard ways to safeguard an application and make sure that threads don't write over each other or cause chaos. You'll learn how to use locking, semaphores, latches, completableFutures, and ForkJoinTask.  

  • In Part 3, you'll learn how to leverage java.util.Concurrent collections as well as more advanced techniques such as the consumer-producer pattern,reactive streams, and RxJava to maximize your applications.  

Are you ready to write scalable, multi-threaded applications? Join me in the first chapter!

Meet your teacher: Raf Gemmail

I am a proven technical leader, Agile coach, solutions architect, and full-stack polyglot with a Java engineering core. I have an outcome and a customer-centric mindset, with a history of helping both small and well-known organizations to design and deliver high-impact and data-intensive solutions.

Raf Gemmail
Raf Gemmail

I’ve been building software my whole life and have been fortunate enough to work with organizations such as the BBC and Booking.com. As a practitioner of London School TDD, I have led and coached many developers on their journey through making all delivery about what we have traditionally called testing. 💪 Finally, I have built many scalable and performant applications, for investment banks, media organizations, and others with performance-sensitive business needs.

Table of contents

Example of certificate of achievement
Example of certificate of achievement