学习java过程中关于生产者消费者模型的一些心得

生产者消费者模型(同时有多个线程对同一资源进行访问,并进行不同的操作)

这里面一共有三个对象:

1、生产者对象

2、产品对象(资源)

3、消费者对象

无库存模型 要点:

同一时间内只能有一个生产者 ;同一时间内只能有一个消费者;生产者在生产的同时消费者不能消费;消费者消费的时候生产者不能生产。这就要求我们在编码的时候要对相应的生产方法和消费方法进行上锁。

上锁的时候要注意:

1、给两个方法上锁用的锁对象要用同一个锁对象(可以给这两个方法都传递过来同一个产品对象作为锁对象,字符串、类文件也都可以用为锁对象,还可以调用Lock方法)

2、锁的范围不能过大,否则会出现重复

当消费者发现没有产品、或者生产者发现有产品时可以使用调用wait()方法使当前对象的线程释放锁并进入阻塞状态,知道其他线程调用同一锁并调用notify()或者notifyAll()方法为止。

notify():唤醒同一对象锁中调用wait()的第一个线程。

notifyAll():唤醒同一对象中所有调用wait()方法的线程,优先级最高的线程先被唤醒并执行。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值