Mastering Concurrency Programming with Java 8

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

Mastering Concurrency Programming with Java 8

This ebook is included in a Mapt subscription
Javier Fernández González

4 customer reviews
Master the principles and techniques of multithreaded programming with the Java 8 Concurrency API
$0.00
$22.00
$54.99
$29.99p/m after trial
RRP $43.99
RRP $54.99
Subscription
eBook
Print + eBook
Start 30 Day Trial
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
 
Preview in Mapt

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 4 reviews

Read More Reviews