A definitive guide to mastering and implementing concurrency patterns in your applications
Key Features
Build scalable apps with patterns in multithreading, synchronization, and functional programming
Explore the parallel programming and multithreading techniques to make the code run faster
Efficiently use the techniques outlined to build reliable applications
Book DescriptionSelecting the correct concurrency architecture has a significant impact on the design and performance of your applications. This book explains how to leverage the different characteristics of parallel architecture to make your code faster and more efficient.
To start with, you'll understand the basic concurrency concepts and explore patterns around explicit locking, lock free programming, futures & actors. Then, you'll get insights into different concurrency models and parallel algorithms and put them to practice in different scenarios to realize your application's true potential. We'll take you through multithreading design patterns, such as master, slave, leader, follower, map-reduce, and monitor, also helping you to learn hands-on coding using these patterns.
Once you've grasped all of this, you'll move on to solving problems using synchronizer patterns. You'll discover the rationale for these patterns in distributed & parallel applications, followed by studying how future composition, immutability and the monadic flow help create more robust code.
Toward the end of the book, you'll learn about the actor paradigm and actor patterns - the message passing concurrency paradigm.
What you will learn
Explore parallel architecture
Get acquainted with concurrency models
Internalize design themes by implementing multithreading patterns
Get insights into concurrent design patterns
Discover design principles behind many java threading abstractions
Work with functional concurrency patterns
Who this book is forThis is a must-have guide for developers who want to learn patterns to build scalable and high-performing apps. It’s assumed that you already have a decent level of programming knowledge.