| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 616 人关注过本帖
标题:生产者与消费者,这里出现什么问题
取消只看楼主 加入收藏
dengjinbao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:64
专家分:119
注 册:2011-3-22
结帖率:0
收藏
已结贴  问题点数:5 回复次数:0 
生产者与消费者,这里出现什么问题
程序代码:
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
快速回复:生产者与消费者,这里出现什么问题
数据加载中...
 
   



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

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