Multithreading and Concurrency in Java: Scaling a Multithreaded Application

Expected Duration
Lesson Objectives
Course Number
Expertise Level


Creating and managing multiple concurrent threads manually can be painstaking, but Java includes objects that make this much simpler. This course will help you gain experience using objects such as Java's ExecutorService and the Fork/Join framework that make it easy to write scalable multithreaded applications. You will get hands on with these objects and will recognize their use cases, features and their limitations.

Expected Duration (hours)

Lesson Objectives

Multithreading and Concurrency in Java: Scaling a Multithreaded Application

  • discover the key concepts covered in this course
  • create an ExecutorService instance to manage a pool of thread workers and submit tasks to it
  • use a CountDownLatch to synchronize with the execution of threads submitted to an ExecutorService
  • describe how an ExecutorService instance can be shut down while still allowing submitted tasks to run
  • distinguish between the graceful and immediate shutdown of an ExecutorService instance
  • recognize the options available to monitor the execution of a task using a Future object
  • implement the Callable interface to define a task that can run in a thread and returns a result
  • schedule one-off tasks to execute at a specified point in the future using the ScheduledExecutorService
  • schedule recurring tasks to execute at a set interval using the ScheduledExecutorService
  • use the Fork/Join framework to break up a large task into a number of smaller sub-tasks
  • submit a large task to ForkJoinPool and recognize how these can be split into smaller sub-tasks
  • summarize the key concepts covered in this course
  • Course Number:

    Expertise Level