Mastering Concurrency Programming with Java 9 - Second Edition

Master the principles to make applications robust, scalable and responsive
Preview in Mapt

Mastering Concurrency Programming with Java 9 - Second Edition

Javier Fernández González

1 customer reviews
Master the principles to make applications robust, scalable and responsive
Mapt Subscription
FREE
$29.99/m after trial
eBook
$10.00
RRP $39.99
Save 74%
Print + eBook
$49.99
RRP $49.99
What do I get with a Mapt Pro subscription?
  • Unlimited access to all Packt’s 5,000+ eBooks and Videos
  • Early Access content, Progress Tracking, and Assessments
  • 1 Free eBook or Video to download and keep every month after trial
What do I get with an eBook?
  • Download this book in EPUB, PDF, MOBI formats
  • DRM FREE - read and interact with your content when you want, where you want, and how you want
  • Access this title in the Mapt reader
What do I get with Print & eBook?
  • Get a paperback copy of the book delivered to you
  • Download this book in EPUB, PDF, MOBI formats
  • DRM FREE - read and interact with your content when you want, where you want, and how you want
  • Access this title in the Mapt reader
What do I get with a Video?
  • Download this Video course in MP4 format
  • DRM FREE - read and interact with your content when you want, where you want, and how you want
  • Access this title in the Mapt reader
$0.00
$10.00
$49.99
$29.99 p/m after trial
RRP $39.99
RRP $49.99
Subscription
eBook
Print + eBook
Start 30 Day Trial

Frequently bought together


Mastering Concurrency Programming with Java 9 - Second Edition Book Cover
Mastering Concurrency Programming with Java 9 - Second Edition
$ 39.99
$ 10.00
Natural Language Processing with Java - Second Edition Book Cover
Natural Language Processing with Java - Second Edition
$ 39.99
$ 10.00
Buy 2 for $20.00
Save $59.98
Add to Cart

Book Details

ISBN 139781785887949
Paperback516 pages

Book Description

Concurrency programming allows several large tasks to be divided into smaller sub-tasks, which are further processed as individual tasks that run in parallel. Java 9 includes a comprehensive API with lots of ready-to-use components for easily implementing powerful concurrency applications, but with high flexibility so you can adapt these components to your needs.

The book starts with a full description of the design principles of concurrent applications and explains how to parallelize a sequential algorithm. You will then be introduced to Threads and Runnables, which are an integral part of Java 9's concurrency API. You will see how to use all the components of the Java concurrency API, from the basics to the most advanced techniques, and will implement them in powerful real-world concurrency applications.

The book ends with a detailed description of the tools and techniques you can use to test a concurrent Java application, along with a brief insight into other concurrency mechanisms in JVM.

Table of Contents

Chapter 1: The First Step - Concurrency Design Principles
Basic concurrency concepts
Possible problems in concurrent applications
A methodology to design concurrent algorithms
Java Concurrency API
Concurrency design patterns
Tips and tricks for designing concurrent algorithms
Summary
Chapter 2: Working with Basic Elements - Threads and Runnables
Threads in Java
First example: matrix multiplication
Second example - file search
Summary
Chapter 3: Managing Lots of Threads - Executors
An introduction to executors
First example - the k-nearest neighbors algorithm
Second example - concurrency in a client/server environment
Summary
Chapter 4: Getting the Most from Executors
Advanced characteristics of executors
First example - an advanced server application
Second example - executing periodic tasks
Additional information about executors
Summary
Chapter 5: Getting Data from Tasks - The Callable and Future Interfaces
Introducing the Callable and Future interfaces
First example - a best-matching algorithm for words
The second example - creating an inverted index for a collection of documents
Summary
Chapter 6: Running Tasks Divided into Phases - The Phaser Class
An introduction to the Phaser class
First example - a keyword extraction algorithm
The second example - a genetic algorithm
Summary
Chapter 7: Optimizing Divide and Conquer Solutions - The Fork/Join Framework
An introduction to the fork/join framework
The first example - the k-means clustering algorithm
The second example - a data filtering algorithm
The third example - the merge sort algorithm
Other methods of the fork/join framework
Summary
Chapter 8: Processing Massive Datasets with Parallel Streams - The Map and Reduce Model
An introduction to streams
The first example - a numerical summarization application
The second example - an information retrieval search tool
Summary
Chapter 9: Processing Massive Datasets with Parallel Streams - The Map and Collect Model
Using streams to collect data
The first example - searching data without an index
The second example - a recommendation system
The third example - common contacts in a social network
Summary
Chapter 10: Asynchronous Stream Processing - Reactive Streams
Introduction to reactive streams in Java
The first example - a centralized system for event notification
The second example - a news system
Summary
Chapter 11: Diving into Concurrent Data Structures and Synchronization Utilities
Concurrent data structures
Synchronization mechanisms
Summary
Chapter 12: Testing and Monitoring Concurrent Applications
Monitoring concurrency objects
Monitoring concurrency applications
Testing concurrency applications
Summary
Chapter 13: Concurrency in JVM - Clojure and Groovy with the Gpars Library and Scala
Concurrency in Clojure
Concurrency in Groovy with the GPars library
Software transactional memory
Concurrency in Scala
Summary

What You Will Learn

  • Master the principles that every concurrent application must follow
  • See how to parallelize a sequential algorithm to obtain better performance without data inconsistencies and deadlocks
  • Get the most from the Java Concurrency API components
  • Separate the thread management from the rest of the application with the Executor component
  • Execute phased-based tasks in an efficient way with the Phaser components
  • Solve problems using a parallelized version of the divide and conquer paradigm with the Fork / Join framework
  • Find out how to use parallel Streams and Reactive Streams (a new feature of Java 9)
  • Implement the “map and reduce” and “map and collect” programming models
  • Control the concurrent data structures and synchronization mechanisms provided by the Java Concurrency API
  • Implement efficient solutions for some actual problems such as data mining, machine learning, and more

Authors

Table of Contents

Chapter 1: The First Step - Concurrency Design Principles
Basic concurrency concepts
Possible problems in concurrent applications
A methodology to design concurrent algorithms
Java Concurrency API
Concurrency design patterns
Tips and tricks for designing concurrent algorithms
Summary
Chapter 2: Working with Basic Elements - Threads and Runnables
Threads in Java
First example: matrix multiplication
Second example - file search
Summary
Chapter 3: Managing Lots of Threads - Executors
An introduction to executors
First example - the k-nearest neighbors algorithm
Second example - concurrency in a client/server environment
Summary
Chapter 4: Getting the Most from Executors
Advanced characteristics of executors
First example - an advanced server application
Second example - executing periodic tasks
Additional information about executors
Summary
Chapter 5: Getting Data from Tasks - The Callable and Future Interfaces
Introducing the Callable and Future interfaces
First example - a best-matching algorithm for words
The second example - creating an inverted index for a collection of documents
Summary
Chapter 6: Running Tasks Divided into Phases - The Phaser Class
An introduction to the Phaser class
First example - a keyword extraction algorithm
The second example - a genetic algorithm
Summary
Chapter 7: Optimizing Divide and Conquer Solutions - The Fork/Join Framework
An introduction to the fork/join framework
The first example - the k-means clustering algorithm
The second example - a data filtering algorithm
The third example - the merge sort algorithm
Other methods of the fork/join framework
Summary
Chapter 8: Processing Massive Datasets with Parallel Streams - The Map and Reduce Model
An introduction to streams
The first example - a numerical summarization application
The second example - an information retrieval search tool
Summary
Chapter 9: Processing Massive Datasets with Parallel Streams - The Map and Collect Model
Using streams to collect data
The first example - searching data without an index
The second example - a recommendation system
The third example - common contacts in a social network
Summary
Chapter 10: Asynchronous Stream Processing - Reactive Streams
Introduction to reactive streams in Java
The first example - a centralized system for event notification
The second example - a news system
Summary
Chapter 11: Diving into Concurrent Data Structures and Synchronization Utilities
Concurrent data structures
Synchronization mechanisms
Summary
Chapter 12: Testing and Monitoring Concurrent Applications
Monitoring concurrency objects
Monitoring concurrency applications
Testing concurrency applications
Summary
Chapter 13: Concurrency in JVM - Clojure and Groovy with the Gpars Library and Scala
Concurrency in Clojure
Concurrency in Groovy with the GPars library
Software transactional memory
Concurrency in Scala
Summary

Book Details

ISBN 139781785887949
Paperback516 pages
Read More
From 1 reviews

Read More Reviews

Recommended for You

Java 9 Concurrency Cookbook - Second Edition Book Cover
Java 9 Concurrency Cookbook - Second Edition
$ 39.99
$ 10.00
Mastering Java 9 Book Cover
Mastering Java 9
$ 35.99
$ 10.00
Java 9 Data Structures and Algorithms Book Cover
Java 9 Data Structures and Algorithms
$ 31.99
$ 10.00
Java 9 Programming Blueprints Book Cover
Java 9 Programming Blueprints
$ 39.99
$ 10.00
Java 9 Cookbook Book Cover
Java 9 Cookbook
$ 35.99
$ 10.00
Design Patterns and Best Practices in Java 9 Book Cover
Design Patterns and Best Practices in Java 9
$ 35.99
$ 10.00