Write a multi-class parallel Java program that simulates the game of life. Each cell will have its own thread dedicated to it to compute the cell's value in the next generation. This thread will be embedded in a class that is instantiated M*N times by the driver, once for each cell in the grid. Thread synchronization will be done with message passing.
No semaphores, no monitors, and no busy waiting allowed! Neither nap() nor sleep() is allowed.
The primary problem you have to solve is coordinating all the cell threads during each generation. A cell thread cannot start computing the new cell value for the next generation until all other cells have completed the computation for the current generation. Use Java message passing, that is send and receive to solve this problem.
If you have not already done so for game-of-life, animate your program using XtangoAnimator.