JAVA学习心得------生产/消费模型

本文探讨JAVA学习中的生产/消费模型,强调了容器、生产者和消费者的概念。当容器满或空时,通过wait()和notify()方法协调生产者和消费者的线程同步,避免异常。文中还对比了wait()和sleep()的区别,并指出正确使用同步代码块的重要性。
摘要由CSDN通过智能技术生成

JAVA学习心得------生产/消费模型

顾名思义了,生产/消费模型就是有人拿有人取的模式。用比较简单的程序来说,可以只看做三个方面。
一、消费者:从程序中拿走东西的。
二、容器:存储东西的地方。
三、生产者:往容器中放东西的。

那么从现实中思考,生产者不停的制造所需物品,而一个容器是有他的容量的。当到达一定值时,便不再收纳。消费者不停从容器内拿走物品,而容器为空时,他也就无法拿东西。转换成程序来说。生产者、消费者可看做两个线程,他们在程序启动后不停运行。如果作为容器的类中有数据可去,那么整个程序可正常运行。但其中一个只要有特殊偏差。比如:拿比取快,总会出现无物可取的情况。这个时候程序就会发生异常。

这样的话,我们就要思考,让两者都存在,并且不会出现问题的情况。
1.当容器中没有产品时,不让消费者拿取,生产者正常生产。
2.当容器被产品充满时,暂停生产,让消费者拿去商品。

当明确思路后,接下来就开始用程序来解释了。

生产消费模型中,我们会用到wait()和notify()这两个方法。

wait()
这个方法在Object这个类中,所以自己写的程序可以直接调用。他的作用有点类似于sleep(),都会导致当前的线程进入阻塞状态。来说几点这两个方法的区别吧。
1.wait()不需要写入时间,当执行到他这条语句时,整个线程会完全停下来,什么都不做,直到他被另一个线程唤醒。而sleep(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值