This chapter has introduced the concept of a process, explained how we model processes and described Java threads as implementations of processes. In particular:
The execution of a program (or subprogram) is termed a process. Processes are the units of concurrent activity used in concurrent programming.
A process can be modeled as a state machine in which the transitions are atomic or indivisible actions executed by the process. We use LTS, Labeled Transition Systems, to represent state machines.
State machines are described concisely using FSP, a simple process algebra. The chapter introduced the action prefix, “-> ”, and choice, “|”, operators in addition to the use of recursion, index sets and guards.
Our notations do not distinguish input actions from outputs. However, inputs usually form part of a choice offered to the environment of a process while outputs do not.
We have used Java threads to show how processes are implemented and how they are used in programs. Java threads are an example of lightweight processes, in the terminology of operating systems.