Mastering Concurrency Programming with Java 8

Master the principles and techniques of multithreaded programming with the Java 8 Concurrency API
Preview in Mapt

Mastering Concurrency Programming with Java 8

Javier Fernández González

1 customer reviews
Master the principles and techniques of multithreaded programming with the Java 8 Concurrency API
Mapt Subscription
FREE
$29.99/m after trial
eBook
$30.80
RRP $43.99
Save 29%
Print + eBook
$54.99
RRP $54.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
$30.80
$54.99
$29.99p/m after trial
RRP $43.99
RRP $54.99
Subscription
eBook
Print + eBook
Start 30 Day Trial

Frequently bought together


Mastering Concurrency Programming with Java 8 Book Cover
Mastering Concurrency Programming with Java 8
$ 43.99
$ 30.80
Mastering Concurrency Programming with Java 9 - Second Edition Book Cover
Mastering Concurrency Programming with Java 9 - Second Edition
$ 39.99
$ 28.00
Buy 2 for $35.00
Save $48.98
Add to Cart
Subscribe and access every Packt eBook & Video.
 
  • 5,000+ eBooks & Videos
  • 50+ New titles a month
  • 1 Free eBook/Video to keep every month
Start Free Trial
 

Book Details

ISBN 139781785886126
Paperback430 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. All the sub-tasks are combined together once the required results are achieved; they are then merged to get the final output. The whole process is very complex. This process goes from the design of concurrent algorithms to the testing phase where concurrent applications need extra attention. Java includes a comprehensive API with a lot of ready-to-use components to implement powerful concurrency applications in an easy way, but with a high flexibility to adapt these components to your needs.

The book starts with a full description of design principles of concurrent applications and how to parallelize a sequential algorithm. We'll show you how to use all the components of the Java Concurrency API from basics to the most advanced techniques to implement them in powerful concurrency applications in Java.

You will be using real-world examples of complex algorithms related to machine learning, data mining, natural language processing, image processing in client / server environments. Next, you will learn how to use the most important components of the Java 8 Concurrency API: the Executor framework to execute multiple tasks in your applications, the phaser class to implement concurrent tasks divided into phases, and the Fork/Join framework to implement concurrent tasks that can be split into smaller problems (using the divide and conquer technique). Toward the end, we will cover the new inclusions in Java 8 API, the Map and Reduce model, and the Map and Collect model. The book will also teach you about the data structures and synchronization utilities to avoid data-race conditions and other critical problems. Finally, the book ends with a detailed description of the tools and techniques that you can use to test a Java concurrent application.

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
The Java memory model
Tips and tricks to design concurrent algorithms
Summary
Chapter 2: Managing Lots of Threads – Executors
An introduction to executors
First example – the k-nearest neighbors algorithm
The second example – concurrency in a client/server environment
Comparing the two solutions
Other methods of interest
Summary
Chapter 3: Getting the Maximum from Executors
Advanced characteristics of executors
The first example – an advanced server application
The second example – executing periodic tasks
Additional information about executors
Summary
Chapter 4: Getting Data from the 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 5: 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 6: 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 7: 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 8: 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 9: Diving into Concurrent Data Structures and Synchronization Utilities
Concurrent data structures
Synchronization mechanisms
Summary
Chapter 10: Integration of Fragments and Implementation of Alternatives
Big-block synchronization mechanisms
An example of a document clustering application
Implementation of alternatives with concurrent programming
Summary
Chapter 11: Testing and Monitoring Concurrent Applications
Monitoring concurrency objects
Monitoring concurrency applications
Testing concurrency applications
Summary

What You Will Learn

  • Design concurrent applications by converting a sequential algorithm into a concurrent one
  • Discover how to avoid all the possible problems you can get in concurrent algorithms
  • Use the Executor framework to manage concurrent tasks without creating threads
  • Extend and modify Executors to adapt their behavior to your needs
  • Solve problems using the divide and conquer technique and the Fork/Join framework
  • Process massive data sets with parallel streams and Map/Reduce implementation
  • Control data-race conditions using concurrent data structures and synchronization mechanisms
  • Test and monitor concurrent applications

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
The Java memory model
Tips and tricks to design concurrent algorithms
Summary
Chapter 2: Managing Lots of Threads – Executors
An introduction to executors
First example – the k-nearest neighbors algorithm
The second example – concurrency in a client/server environment
Comparing the two solutions
Other methods of interest
Summary
Chapter 3: Getting the Maximum from Executors
Advanced characteristics of executors
The first example – an advanced server application
The second example – executing periodic tasks
Additional information about executors
Summary
Chapter 4: Getting Data from the 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 5: 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 6: 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 7: 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 8: 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 9: Diving into Concurrent Data Structures and Synchronization Utilities
Concurrent data structures
Synchronization mechanisms
Summary
Chapter 10: Integration of Fragments and Implementation of Alternatives
Big-block synchronization mechanisms
An example of a document clustering application
Implementation of alternatives with concurrent programming
Summary
Chapter 11: Testing and Monitoring Concurrent Applications
Monitoring concurrency objects
Monitoring concurrency applications
Testing concurrency applications
Summary

Book Details

ISBN 139781785886126
Paperback430 pages
Read More
From 1 reviews

Read More Reviews

Recommended for You

Learning Reactive Programming with Java 8 Book Cover
Learning Reactive Programming with Java 8
$ 35.99
$ 7.20
Python Machine Learning Book Cover
Python Machine Learning
$ 35.99
$ 25.20
Java Deep Learning Essentials Book Cover
Java Deep Learning Essentials
$ 39.99
$ 28.00
Mastering Microservices with Java Book Cover
Mastering Microservices with Java
$ 35.99
$ 25.20
Learning Java Functional Programming Book Cover
Learning Java Functional Programming
$ 43.99
$ 30.80
Neural Network Programming with Java Book Cover
Neural Network Programming with Java
$ 35.99
$ 7.20