Concurrent Programming - Course Work 1

1a P, Q and R are indivisible actions, for the concurrent program: (P || Q || R), executed on a single physical processor list all the legal execution orderings.

b If P is x = 3; Q is y = 5; and R is z = x + y; list all the possible values of z which can be computed by the program of part a, given that x and y are initially zero.

c Modify the program from part a such that the maximum value for z is always computed. Your solution should still retain some concurrent execution.

2 A barrier is an object used to synchronize multiple threads. Each of n threads wait at the barrier until all n threads are at the barrier, then all n processes proceed. Give the code for the following class which implements barrier synchronization.

class Barrier {
     Barrier(int n) {} // n threads
     public synchronized void waitAll() {}

For fun

Write a Java applet which demonstrates the operation of the Barrier class. Mail demo code/ URL to me at I will include the best demonstration in the course Web pages.