producer consumer with wait() and notifyAll()
producer consumer with blocking queue