一、需求分析
为了更好地理解进程同步的机制和过程,决定设计实现生产者消费者问题的解决,以实现进程的同步控制。
题目描述:有n个生产者在生产产品,这些产品将提供给m个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有k个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,显然生产者和消费者之间必须保持同步,即不允许消费者到一个空的缓冲区中取产品,也不允许生产者向一个已经放入产品的缓冲区中再次投放产品。
由此为题,编程实现:输入生产者个数、消费者个数、缓冲区个数、每个生产者生产产品的个数,实现输出:生产者消费者同步执行情况下的具体执行过程。
二、概要设计
为了简化编码过程,将题目转变成由线程实现同步,以达到相同的目标,并采用Java实现,在控制台将程序执行的整个过程生产者消费者的执行过程输出出来。
设计初步方案:使用Java的Thread来实现线程的生成,并继承Thread类,重写run()方法,来设定线程中的执行代码。
生产者流程图
![de1185883c04c736f395efac8da42c54.png](https://i-blog.csdnimg.cn/blog_migrate/2a46bf6d08b8cc410cb695a74f01cf35.jpeg)
![b60b9dbd7c4bae571f53a7c1ab0a0673.png](https://i-blog.csdnimg.cn/blog_migrate/0bc1e0723faa5543d89d196f7e5898d6.png)
参考文档和完整的文档和源码下载地址:
https://www.write-bug.com/article/1365.html