Back to search results

Learning concurrent programming in Scala

Enlarge text Shrink text
  • Book

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.

Title Learning concurrent programming in Scala : learn the art of building intricate, modern, scalable concurrent applications using Scala / Aleksandar Prokopec.
Additional Titles Learn the art of building intricate, modern, scalable concurrent applications using Scala
Edition 1st edition.
Publisher Birmingham, England : Packt Publishing
Creation Date 2014
Notes Includes index.
English
Content Cover
Copyright
Credits
Foreword
About the Author
Acknowledgments
About the Reviewers
www.PacktPub.com
Table of Contents
Preface
Chapter 1: Introduction
Concurrent programming
A brief overview of traditional concurrency
Modern concurrency paradigms
The advantages of Scala
Preliminaries
Execution of a Scala program
A Scala primer
Summary
Exercises
Chapter 2: Concurrency on the JVM and the Java Memory Model
Processes and Threads
Creating and starting threads
Atomic execution
Reordering
Monitors and synchronization
Deadlocks
Guarded blocks
Interrupting threads and the graceful shutdownVolatile variables
The Java Memory Model
Immutable objects and final fields
Chapter 3: Traditional Building Blocks of Concurrency
The Executor and ExecutionContext objects
Atomic primitives
Atomic variables
Lock-free programming
Implementing locks explicitly
The ABA problem
Lazy values
Concurrent collections
Concurrent queues
Concurrent sets and maps
Concurrent traversals
Creating and handling processes
Chapter 4: Asynchronous Programming with Futures and Promises
Futures
Starting future computationsFuture callbacks
Futures and exceptions
Using the Try type
Fatal exceptions
Functional composition on futures
Promises
Converting callback-based APIs
Extending the future API
Cancellation of asynchronous computations
Futures and blocking
Awaiting futures
Blocking in asynchronous computations
The Scala Async library
Alternative Future frameworks
Chapter 5: Data-Parallel Collections
Scala collections in a nutshell
Using parallel collections
Parallel collection class hierarchy
Configuring the parallelism level
Measuring the performance on the JVMCaveats of parallel collections
Non-parallelizable collections
Non-parallelizable operations
Side effects in parallel operations
Nondeterministic parallel operations
Commutative and associative operators
Using parallel and concurrent collections together
Weakly consistent iterators
Implementing custom parallel collections
Splitters
Combiners
Alternative data-parallel frameworks
Collections hierarchy in ScalaBlitz
Chapter 6: Concurrent Programming with Reactive Extensions
Creating Observable objects
Observables and exceptionsThe Observable contract
Implementing custom Observable objects
Creating Observables from futures
Subscriptions
Composing Observable objects
Nested observables
Failure handling in observables
Rx schedulers
Using custom schedulers for UI applications
Subjects and top-down reactive programming
Chapter 7: Software Transactional Memory
The trouble with atomic variables
Using Software Transactional Memory
Transactional references
Using the atomic statement
Composing transactions
The interaction between transactions and side effects
Single-operation transactions
Series Community Experience Distilled
Extent 1 online resource (366 p.)
Language English
Copyright Date ©2014
National Library system number 997010711665705171
MARC RECORDS

Have more information? Found a mistake?