第四章:综合实战:“生产者-消费者”模型

生产者与消费者基本程序

在多线程的开发过程之中最为著名的案例就是生产者与消费者操作,该操作的主要流程如下:

  生产者负责信息内容的生产

  每当生产者生产完成一项完整的信息之后消费者要从这里面取走信息;

  如果生产者没有生成者则消费者要等待它生产完成,如果消费者还没有对信息进行消费,则生产者应该等待消费者处理完成后再继续生成

可以将生产者与消费者定义为两个独立的线程类对象,但是对于现在生成的数据,可以使用以下组成

  数据一:title = 王建,content = 宇宙大帅哥;

  数据二:title = 小高,content = 猥琐第一人;

既然生产者与消费者是两个独立的线程,那么这两个独立的线程之间就需要有一个数据的保存集中点,那么可以单独定义一个Message类实现数据保存

 

通过整个代码的执行你会发现此时有两个主要的问题:

  问题一:数据不同步;

  问题二:生产一个取走一个,但是有重复生产与重复取出的问题

解决生产者-消费者同步问题(解决数据同步)

 首先解决数据同步问题,最简单办法是使用synchronized关键字,使用同步代码块或同步方法,于是这个时候对于同步的处理就可以直接在Message类中完成。

 

 在进行同步处理的时候肯定需要有一个同步的处理对象,那么此时肯定要将同步操作交由Message类处理是最合适的。这个时候发现数据已经可以保持一致了,但是对于重复操作的问题依然存在。也就是说同步不能解决重复操作的问题。

利用Object类解决重复操作问题

猜你喜欢

转载自www.cnblogs.com/djlindex/p/11225345.html
今日推荐