社区
Java
帖子详情
Java生产者消费者问题中关于notify()使用位置问题
霜月枫桥
2016-02-01 02:28:03
在生产者消费者问题中,为什么notify在while循环外程序可以正常运行,在循环内却会产生死锁那。
我输出了一下试试,当notify在循环内时,若线
程满足循环的条件,那么程序只运行到循环内,this.wait()便停止了。
...全文
260
4
打赏
收藏
Java生产者消费者问题中关于notify()使用位置问题
在生产者消费者问题中,为什么notify在while循环外程序可以正常运行,在循环内却会产生死锁那。 我输出了一下试试,当notify在循环内时,若线程满足循环的条件,那么程序只运行到循环内,this.wait()便停止了。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
小飞侠0070
2016-12-28
打赏
举报
回复
我也发现这个问题了
霜月枫桥
2016-02-27
打赏
举报
回复
引用 1 楼 longtian1213 的回复:
你这么写都放到一个线程里了吧!这不是生产者和消费者的写法!
源代码找不到了,你随便有一个生产者的代码试一下吧
霜月枫桥
2016-02-27
打赏
举报
回复
引用 1 楼 longtian1213 的回复:
你这么写都放到一个线程里了吧!这不是生产者和消费者的写法!
我没放到一个线程中,这是两个线程,当生产者生产满了便wait,然后notify消费者,消费者消费完了,便会wait,然后notify生产者,进行生产,从而避免死锁。当写成第一张图的样子时,程序可以运行。写成第二张图能运行,但是不能在生产满了或消费完了后唤醒另一个进程
S117
2016-02-23
打赏
举报
回复
你这么写都放到一个线程里了吧!这不是生产者和消费者的写法!
使用
wait()和
notify
()方法实现生产者消费者模式
以下总结只是个人理解,如有错误,敬请指正。 一、wait()和
notify
()作用 wait()和
notify
()方法是Object类的方法,因为Object类是所有类的根类,因此所有类都有这两个方法。 当调用对象的wait()方法时会释放获取的该对象的锁。 既然是释放锁,我们首先要有锁才能释放,因此wait()方法必须在同步方法或同步代码块
中
才能执行即在synchronized修饰的方法...
利用wait()和
notify
()实现生产者与消费者
问题
生产者与消费者
问题
是并发编程里面的经典
问题
,下面用wait()和
notify
()来实现消费者线程和生产者线程的并发执行。 说之前先讲几个概念: wait()与sleep()的区别: 1.首先sleep()是Thread()类的方法,而wait()是Object类的方法,包括
notify
(),
notify
All()都是Object类的方法 2.
java
wait()/
notify
() 实现生产者消费者模式
java
中
的多线程会涉及到线程间通信,常见的线程通信方式,例如共享变量、管道流等,这里我们要实现生产者消费者模式,也需要涉及到线程通信,不过这里我们用到了
java
中
的wait()、
notify
()方法: wait():进入临界区的线程在运行到一部分后,发现进行后面的任务所需的资源还没有准备充分,所以调用wait()方法,让线程阻塞,等待资源,同时释放临界区的锁,此时线程的状态也从RUNNABLE
Java
并发陷阱:为何
notify
() 在多生产者消费者模型
中
如此危险?
在
Java
并发编程
中
,生产者-消费者模式是一个经典且实用的模型。我们通常
使用
阻塞队列(Blocking Queue)作为生产者和消费者之间的缓冲区。在尝试手动实现阻塞队列时,synchronized、wait()、
notify
() 和
notify
All() 这几个关键字是绕不开的核心。然而,一个常见的误区,或者说陷阱,就潜藏在
notify
() 的
使用
上,尤其是在涉及多个生产者和多个消费者的场景下。
用wait()和
notify
()实现生产者和消费者
示例代码 import
java
.util.Date; import
java
.util.LinkedList; public class Deque { //最大容量 private volatile int maxSize; //链表集合 private LinkedList<Integer> datas; public Dequ...
Java
51,407
社区成员
86,124
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章