List of Figures

1.1   A parallel system

1.2   A distributed system

1.3   A process with four threads

1.4   HelloWorldThread.java

1.5   FooBar.java

1.6   Fibonacci.java

2.1   Interface for accessing the critical section

2.2   A program to test mutual exclusion

2.3   An attempt that violates mutual exclusion

2.4   An attempt that can deadlock

2.5   An attempt with strict alternation

2.6   Peterson’s algorithm for mutual exclusion

2.7   Lamport’s bakery algorithm

2.8   TestAndSet hardware instruction

2.9   Mutual exclusion using TestAndSet

2.10 Semantics of swap operation

2.11 Dekker.java

3.1   Binary semaphore

3.2   Counting semaphore

3.3   A shared buffer implemented with a circular array

3.4   Bounded buffer using semaphores

3.5   Producer-consumer algorithm using semaphores

3.6   Reader-writer algorithm using semaphores

3.7   The dining philosopher problem

3.8   Dining Philosopher

3.9   Resource Interface

3.10 Dining philosopher using semaphores

3.11 A pictorial view of a Java monitor

3.12 Bounded buffer monitor

3.13 Dining philosopher using monitors

3.14 Linked list

4.1   Concurrent histories illustrating sequential consistency

4.2   Sequential consistency does not satisfy locality

4.3   Summary of consistency conditions

5.1   Safe and unsafe read-write registers

5.2   Concurrent histories illustrating regularity

5.3   Atomic and nonatomic registers

5.4   Construction of a regular boolean register

5.5   Construction of a multivalued register

5.6   Construction of a multireader ...

Get Concurrent and Distributed Computing in Java now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.