Concurrent Programming in Java

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

Learn to use basic concurrency constructs in Java such as threads, locks, accumulators, concurrent collections, and actors, as well as 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 concurrent programming in the context of Java 8. Concurrent programming enables developers to correctly mediate the use of shared resources in parallel programs. By the end of this course, you will learn how to use basic concurrency constructs in Java such as threads, locks, accumulators, concurrent collections, and actors, as well as their theoretical foundations (e.g., linearizability, progress guarantees, memory models).

Why take this course?

  • The theory underlying concurrent programming can be tricky, and it is important for you to be aware of the theoretical foundations of concurrency to avoid common but subtle programming errors.
  • Java 8 has modernized some of the concurrency constructs since the early days of threads and locks.
  • During the course, you will have online access to the instructor and the teaching staff to get individualized answers to your questions.
  • The course includes an assigned project 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:

  • Concurrency theory: linearizability, progress guarantees, and memory models
  • Mutual exclusion using Java’s synchronized methods/statements and reentrant locks
  • Java 8 accumulators and atomic variables
  • Concurrent collections in Java: hashmaps, queues, linked lists, and sets
  • Actor model in Java

Mastery of these concepts will enable you to immediately apply them in the context of concurrent Java programs, and will also help you master other concurrent programming system that you may encounter in the future (e.g., POSIX threads, .NET threads).

Course Trailer

Lecture Samples

Contact

Any questions? Please e-mail RiceOnline.rice.edu

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