Class Table{
public synchronized void putFood(){};
public synchronized void getFood(){};
}
如上,当取食物时调用getFood()同时给this加了锁,发现没食物,于是wait();
wait()时锁释放吗? 不放吧.那么putFood()时就拿不到this锁了吧。那putFood();
是不是就等下去了呢?全部代码如下:
放菜:因为一张桌子由多个厨师放菜,所以厨师放菜的要被同步,如果桌子上已经有十盘菜了.所有厨师
就要等待:
程序代码 程序代码 public synchronized void putFood(Food f){
while(this.size() >= this.maxSize){
try{
this.wait();
}catch(Exception e){}
}
this.add(f);
notifyAll();
}拿菜:同上面,如果桌子上一盘菜也没有,所有食客都要等待:
程序代码 程序代码 public synchronized Food getFood(){
while(this.size() <= 0){
try{
this.wait();
}catch(Exception e){}
}
Food f = (Food)this.removeFirst();
notifyAll();
return f;
}
public synchronized void putFood(){};
public synchronized void getFood(){};
}
如上,当取食物时调用getFood()同时给this加了锁,发现没食物,于是wait();
wait()时锁释放吗? 不放吧.那么putFood()时就拿不到this锁了吧。那putFood();
是不是就等下去了呢?全部代码如下:
放菜:因为一张桌子由多个厨师放菜,所以厨师放菜的要被同步,如果桌子上已经有十盘菜了.所有厨师
就要等待:
程序代码 程序代码 public synchronized void putFood(Food f){
while(this.size() >= this.maxSize){
try{
this.wait();
}catch(Exception e){}
}
this.add(f);
notifyAll();
}拿菜:同上面,如果桌子上一盘菜也没有,所有食客都要等待:
程序代码 程序代码 public synchronized Food getFood(){
while(this.size() <= 0){
try{
this.wait();
}catch(Exception e){}
}
Food f = (Food)this.removeFirst();
notifyAll();
return f;
}
解决方案 »
- 请教大家一个问题,关于java连接2台机器的
- helloworld出NoClassDefFoundError错误,盼解决
- 我用jbuilder写了一个javamail发送字符串的application,在JB中运行得很好,但生成的exe却发送失败
- 在Java中怎么进行四舍五入的运算?
- ******是菜鸟,有个IT职业选择问题想请教大家,急!******
- 我想写个smtp服务器,请问怎样实现smtp服务器发邮件时的身份验证
- java 技术公益大讲堂
- 随机函数问题
- 归来献礼:最容易配置的免费的java applicationserver+webserver+Database是什么?
- Java的编程环境有哪些
- sgml转xml 算法(50 分)
- 问一个SWT多线程的问题
楼主【fuqiang229】截止到2008-07-13 21:41:35的历史汇总数据(不包括此帖):
发帖的总数量:12 发帖的总分数:210 每贴平均分数:17
回帖的总数量:19 得分贴总数量:2 回帖的得分率:10%
结贴的总数量:11 结贴的总分数:210
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:0
结贴的百分比:91.67 % 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
值得尊敬