Java中生产者消费者问题总结
生产者-消费者算是并发编程中常见的问题。依靠缓冲区我们可以实现生产者与消费者之间的解耦。这样我们避免生产者想要交付数据给消费者,但消费者此时还无法接受数据这样的情况发生。这个问题其实就是线程间的通讯,所以要注意的是不能同时读写。比较经典的做法是wait和notify。生产者线程执行15次set操作消费者线程执行10次get操作现在定义Channel类,并创建两个生产者线程和三个消费者线程使用notifyAll而不是notify的原因是,notify有可能出现多次唤醒同类的情况,造成“假死”。我们可以使用更为方便安全的阻塞式集合来实现生产消费者模型。这类集合具有的特点是:当集合已满或者是为空的时候,被调用的方法不会立即执行,该方法将被阻塞,直到可以成功执行为止。
下载地址
用户评论