learning multithreading by implement a simple producer and consumer
application