Understanding Multi-threaded Programming — Programming Keynou