JAVA学习心得------生产/消费模型
顾名思义了,生产/消费模型就是有人拿有人取的模式。用比较简单的程序来说,可以只看做三个方面。
一、消费者:从程序中拿走东西的。
二、容器:存储东西的地方。
三、生产者:往容器中放东西的。
那么从现实中思考,生产者不停的制造所需物品,而一个容器是有他的容量的。当到达一定值时,便不再收纳。消费者不停从容器内拿走物品,而容器为空时,他也就无法拿东西。转换成程序来说。生产者、消费者可看做两个线程,他们在程序启动后不停运行。如果作为容器的类中有数据可去,那么整个程序可正常运行。但其中一个只要有特殊偏差。比如:拿比取快,总会出现无物可取的情况。这个时候程序就会发生异常。
这样的话,我们就要思考,让两者都存在,并且不会出现问题的情况。
1.当容器中没有产品时,不让消费者拿取,生产者正常生产。
2.当容器被产品充满时,暂停生产,让消费者拿去商品。
当明确思路后,接下来就开始用程序来解释了。
生产消费模型中,我们会用到wait()和notify()这两个方法。
wait()
这个方法在Object这个类中,所以自己写的程序可以直接调用。他的作用有点类似于sleep(),都会导致当前的线程进入阻塞状态。来说几点这两个方法的区别吧。
1.wait()不需要写入时间,当执行到他这条语句时,整个线程会完全停下来,什么都不做,直到他被另一个线程唤醒。而sleep(