Learning Concurrent Programming in Scala
About This Book
- Design and implement scalable and easy-to-understand concurrent applications
- Make the most of Scala by understanding its philosophy and harnessing the power of multicores
- Get acquainted with cutting-edge technologies in the field of concurrency, with a particular emphasis on practical, real-world applications
- Step-by-step tutorial guide, which is full of pragmatic examples
Who This Book Is For
This book is a must-have tutorial for software developers aiming to write concurrent programs in Scala, or broaden their existing knowledge of concurrency.
This book is intended for Scala programmers that have no prior knowledge about concurrent programming, as well as those seeking to broaden their existing knowledge about concurrency. Basic knowledge of the Scala programming language will be helpful. Readers with a solid knowledge in another programming language, such as Java, should find this book easily accessible.
What You Will Learn
- Get to grips with the fundamentals of concurrent programming on modern multiprocessor systems, with a particular focus on the JVM concurrency model
- Build high-performance concurrent systems from simple, low-level concurrency primitives
- Express asynchrony in concurrent computations with futures and promises
- Seamlessly accelerate sequential programs by using data-parallel collections
- Implement reactive and event-based programs declaratively with Rx-style event streams
- Design safe, scalable, and easy-to-comprehend in-memory transactional data models
- Transparently create distributed applications that scale across multiple machines
- Choose the correct concurrency abstraction and integrate different concurrency frameworks together in large applications
This book will give you an insight into the best practices necessary to build concurrent programs in Scala using modern, high-level concurrency libraries. It starts by introducing you to the foundations of concurrent programming on the JVM, outlining the basics of the Java Memory Model, and then shows some of the classic building blocks of concurrency, such as the atomic variables, thread pools, and concurrent data structures, along with the caveats of traditional concurrency. It then walks you through different high-level concurrency abstractions, each tailored toward a specific class of programming tasks. Finally, the book presents an overview of when to use which concurrency library and demonstrates how they all work together.