Introduction - If you have any usage issues, please Google them yourself
The program uses a bounded buffer monitor into which the Producer thread puts characters and from which the Consumer thread gets characters. The Consumer runs slightly faster than the Producer, so start the Producer first and wait until a few buffer slots are filled before starting the Consumer.