标题:生产者与消费者,这里出现什么问题
只看楼主
dengjinbao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:64
专家分:119
注 册:2011-3-22
结帖率:0
已结贴  问题点数:5 回复次数:4 
生产者与消费者,这里出现什么问题
程序代码:
public class PandC {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Procedure procedure  = new Procedure();
        Custom  custom = new Custom();
        procedure.start();
        custom.start();

    }

}


class Baozi{
    int id;
    Baozi(int id){
        this.id=id;
    }
    public String toString (){
        return ":"+id;
    }
}


class Panel{
    int index=0;
    Baozi[] baozi =new Baozi[10];
    
    public synchronized void inPut(Baozi bz){
        while(index==baozi.length){
            
                 try {
                     System.out.println("等待消费中~~~~~~~~");
                    this.wait();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            
        }
        this.notify();
        
        baozi[index]=bz;
        index++;
         
    }
    
public synchronized Baozi outPut(){
    
    while(index==0){
        
             try {
                 System.out.println("等该生产中~~~~~~~~");
                this.wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
         }
      this.notify();
      index--;
        return baozi[index];
    }
    
    
}

//生产者

class Procedure extends Thread{
    private Panel p= new Panel();
     public void run(){
        //for(int i=p.index;i<p.baozi.length;i++){
        for(int i=0;i<30;i++){
            Baozi bz = new Baozi(i);
            p.inPut(bz);
            System.out.println ("生产第"+bz+"号包子");
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
    }
    
}

//消费者
class Custom extends Thread{
    private Panel p= new Panel();
     public void run(){
        //for(int i=p.index;i>=0;i--){
        for(int i=0;i<30;i++){    
            Baozi bz=p.outPut();
            System.out.println ("消费第"+bz+"号包子");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
    }
}
搜索更多相关主题的帖子: color 消费者 生产者 procedure 
2011-11-04 19:57
付政委
该用户已被删除
得分:2 
提示: 作者被禁止或删除 内容自动屏蔽
2011-11-05 00:06
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
得分:2 
先看看书上的例子去模仿。
2011-11-05 08:06
w123012306
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:蜘蛛侠
威 望:4
帖 子:307
专家分:1180
注 册:2010-4-22
得分:2 
回复 2楼 付政委
还在拿你那鸡店的程序。。。。。。。

楼上,楼下的一定要幸福开心哦!
2011-11-05 09:25
付政委
该用户已被删除
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2011-11-05 10:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-354313-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.218792 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved