标题:看了两天,还是没看出来我的和别人的正确答案有多大出入,求助
只看楼主
q452227361
Rank: 1
等 级:新手上路
帖 子:16
专家分:4
注 册:2015-4-1
结帖率:50%
 问题点数:0 回复次数:2 
看了两天,还是没看出来我的和别人的正确答案有多大出入,求助
程序代码:
//有一个水池,水池的容量是固定 的500L,一边为进水口,一边为出水口.要求,进水与放水不能同时进行.
//水池一旦满了不能继续注水,一旦放空了,不可以继续放水. 进水的速度5L/s ,  放水的速度2L/s  

package 线程;

class 作业{
    public static void main(String[] args){
        pool p = new pool();
        
        out o = new out(p);
        in  i = new in(p)  ;
        
        o.start();
        i.start();
        
    }
}

class pool{
    int count =500 ;
    boolean full=false;
}

//放水   判断有水不  有就放  没就进水
class out extends Thread{
    pool p;
    
    int rate = 2;  //速率
    int time = 1;  //时间
    int total= 1;  //总量
    
    public out(pool p){
        this.p=p;
    }
    
    public void run(){
        synchronized(p){
            if(p.full==true){            //如果水满了就开始放水
                while(total<p.count){   //如果放出的水总量大于500就停止放水
                    System.out.println("放水中。。。已放 "+total);
                    time++;
                    total=rate * time;
                }
                p.full=false;            //水空了
                p.notify();                //唤醒进水线程
            }else{
                try{
                    p.wait();            //进入等待状态
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
            }
        }    
    }
}

//进水  判断是否有水   有就放水  没就进水
class in extends Thread{
    pool p;
    
    int rate = 5;
    int time = 1;
    int total= 1;
    
    public in(pool p){
        this.p=p;
    }
    
    public void run(){
        synchronized(p){
            if(p.full==false){                //如果水空了就开始进水
                while(total<p.count){        //如果进入的水总量大于500就停止进水
                    System.out.println("进水中。。。已进水 "+total); 
                    time++;
                    total=time*rate;
                }
                p.notify();                    //唤醒放水线程
                p.full=true;                //水满了
            }else{
                try{
                    p.wait();
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
            }
        }
    }
}


[ 本帖最后由 q452227361 于 2015-8-27 16:39 编辑 ]
搜索更多相关主题的帖子: 正确答案 出水口 
2015-08-27 16:35
q452227361
Rank: 1
等 级:新手上路
帖 子:16
专家分:4
注 册:2015-4-1
得分:0 
运行起来不能互相唤醒。。。。。要疯了。。。感觉我自己思路还是比较清晰的啊。。。为什么就是不正确啊?

[ 本帖最后由 q452227361 于 2015-8-27 16:40 编辑 ]
2015-08-27 16:37
q452227361
Rank: 1
等 级:新手上路
帖 子:16
专家分:4
注 册:2015-4-1
得分:0 
谢谢大家,此贴不用回复了。
2015-08-27 16:46



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




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

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