add producer-consumer mode with BlockingQueue