This course is for students and professionals in the industry. It teaches the basics of concurrent programming within Java 8. Concurrent programming allows developers to effectively and correctly manage the sharing of resources in parallel programs. This course will teach you how to use Java concurrency constructs such as threads and locks, critical sections, isolation, actors and optimistic concurrency.
This course is worth it. To avoid making common programming mistakes, it is essential that you are familiar with the theoretical foundations for concurrency. Java 8 has improved many concurrency constructs from the early days with threads and locks. You will be able to access the instructor and mentors online during the course to receive personalized answers to any questions you post on the forums. You will be able to apply the concepts you have learned in each module on your own after the course is over. The desired learning outcomes of this course are as follows: * Concurrency theory: progress guarantees, deadlock, livelock, starvation, linearizability * Use of threads and structured/unstructured locks in Java * Atomic variables and isolation * Optimistic concurrency and concurrent collections in Java (e.g., concurrent queues, concurrent hashmaps) * 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).