Parallel Programming in Java

  • Course StartSelf-paced
  • Course Duration4 weeks
  • Workload4-8 hours per week
  • Credit OfferedCertificate Available
  • TuitionSubscription

Learn to use popular parallel Java frameworks to write parallel programs for a wide range of multicore platforms, while also learning about their theoretical foundations.

Course Description

Part of the Parallel, Concurrent, and Distributed Programming in Java Specialization.

This course teaches industry professionals and students the fundamental concepts of parallel programming in the context of Java 8. Parallel programming enables developers to use multicore computers to make their applications run faster by using multiple processors at the same time. By the end of this course, you will learn how to use popular parallel Java frameworks such as ForkJoin and Stream to write parallel programs for a wide range of multicore platforms whether for servers, desktops, or mobile devices, while also learning about their theoretical foundations (e.g., deadlock freedom, data race freedom, determinism).

Course Trailer

Why take this course?

  • All computers are multicore computers, so it is important for you to learn how to extend your knowledge of sequential Java programming to multicore parallelism.
  • Java 7 and Java 8 have introduced new frameworks for parallelism (ForkJoin, Stream) that have significantly changed the paradigms for parallel programming since the early days of Java.
  • The course includes optional programming projects that will provide you with the necessary hands-on experience to use the concepts learned in the course on your own, after the course ends.

The desired learning outcomes of this course are as follows:

  • Theory of parallelism: work, span, Amdahl’s Law, weak vs. strong scaling, data races, determinism
  • Task parallelism using Java’s ForkJoin framework
  • Functional parallelism using Java’s Future interface
  • Loop-level parallelism using Java 8 Streams
  • Dataflow parallelism using data-driven tasks

Mastery of these concepts will enable you to immediately apply them in the context of multicore Java programs, and will also help you master other parallel programming systems that you may encounter in the future (e.g., C++11, OpenMP, .Net Task Parallel Library).

Lecture Samples


Any questions? Please e-mail

Professor Information

Picture of Dr. Vivek Sarkar

Dr. Vivek Sarkar

Vivek Sarkar is a professor of Computer Science, and the E.D. Butcher Chair in Engineering at Rice University, where his group developed the Habanero Java library and programming system for use in teaching and research.  He received his B.Tech. degree from the Indian Institute of Technology, Kanpur, M.S. degree from University of Wisconsin-Madison, and Ph.D. […]

Full Bio