本帖最后由 Kevin.Kang 于 2015-8-5 15:32 编辑
如果是生产多个,和消费多个的话,两个线程需要加上同一把锁才行。
但是这样做依然还存在着问题:
1.如果消费者先抢到CPU执行权,消费数据,这时数据如果是空,就没有意义。
应该等着数据生产出来,再去消费,这样才具有意义。
2.如果生产者先抢到CPU执行权,生产数据,但是生产完一定数量的数据以后,还继续持有执行权,
它还会继续生产数据,这还现实情况不符,需要等着消费者把数据消费以后,再生产。
正常思路:
1.生产者
先看是否有数据,有就等待,没有就生产,生产完通知消费者消费
2.消费者
先看是否有数据,有就消费,没有就等待,消费完通知生产者生产
java提供了一个等待唤醒机制来解决这个问题。
|
|