ArrayBlockingQueue的问题

DominicHong 2005-03-25 11:20:36
我用ArrayBlockingQueue实现producer和consumer的经典问题,伪代码大概如下:

Producer
while (!stop) {
queue.put(sth);
}

Consumer
while(!stop) {
queue.take();
}

但是,如果Producer突然挂了,而Consumer又刚好阻塞在 queue.take()这里,那么Consumer岂不永远等待下去?有什么办法可以让Producer通知Consumer呢?
我想过用interrupt(),但是比较麻烦。用notifyAll()又没有反应,真难搞。
...全文
85 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
apollo333 2005-03-26
  • 打赏
  • 举报
回复
SYNCHRONIZATION,同步就可以吧。
这样PRODUCER时,CONSUMER不能发生。CONSUMER时,PRODUCER不能发生。
DominicHong 2005-03-26
  • 打赏
  • 举报
回复
不是的,你没用过ArrayBlockingQueue,它是在它自己方法里面阻塞的,外面动没有用,除非用interrupt

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧