解决方案 »

  1.   

    consumer 的while 里面应该先判断,是否有物品可供消费,如果没有,那么wait 等待,等容器有产品可供消费时再消费。
    Producer 的while 里面应该先判断,存放产品的容器是否已满,如果满了,那么wait等待,待容器有空闲时再生产产品放入。
      

  2.   

    谢谢回复。
    我的理解是,BlockingQueue是阻塞队列,如果没有生成,消费者take()操作就只能阻塞。 但我写的程序里,即使没put()元素到队列里,也能够消费……   这个不理解,是和BlockingQueue的具体实现有关吗
      

  3.   

    BlockingQueue 这个类,没怎么用过,回头看看 
    用一个数组来存放产品吧,然后根据是否有产品,决定是否让消费;根据数组是否已满,决定让不让继续生产。