Chapter 1. The First Step – Concurrency Design Principles
Users of computer systems are always looking for better performance for their systems. They want to get higher quality videos, better video games, and faster network speed. Some years ago, processors gave better performance to users by increasing their speed. But now, processors don't increase their speed. Instead of this, they add more cores so that the operating system can execute more than one task at a time. This is named concurrency. Concurrent programming includes all the tools and techniques to have multiple tasks or processes running at the same time in a computer, communicating and synchronizing between them without data loss or inconsistency. In this chapter, we will cover the following topics:
Basic concurrency concepts
Possible problems in concurrent applications
A methodology to design concurrent algorithms
The Java concurrency API
The Java memory model
Concurrency design patterns
Tips and tricks to design concurrency algorithms