Below is an applet of Conway's Game of Life, it is implemented using a thread for each Cell. There are several buttons on the applet. You can start or stop it. You can also change the speed that it runs at. Also available are options to see when a cell is waiting for a neighbour, and to see how old it is.
A consequence of the way this programme was written (or rather the way we were told to write it!) is that the patterns aren't as distinct as for normal implementations. This is because each cell can update itself independently of each other. This means that neighbouring cells can be on different generations to each other.
Here is the source code. It is broken up into 3 files.
1) Life.java - the main program
2) Cell.java - the code for each individual cell
3) GoodFrame.java - the code for a basic frame for when run as application