黑马程序员技术交流社区

标题: 匿名对象会分配内存吗? [打印本页]

作者: 海世山盟    时间: 2014-3-29 17:25
标题: 匿名对象会分配内存吗?
class Res{
        private String name;
        private String sex;
        boolean flag=false;
        public  synchronized void set(String name,String sex)
        {
                if(flag)
                try{this.wait();}catch(Exception e){}
                this.name=name;
                this.sex=sex;
                flag=true;
                this.notify();
                }
                public  synchronized void out(){
                        if(!flag)
                        try{this.wait();}catch(Exception e){}
                        System.out.println(name+"......"+sex);
                        flag=false;
                        this.notify();
                        }
}

class Input implements Runnable{
        Res r;
        static int x=0;
        public Input(Res r){
                this.r=r;
        }
        public void run(){
                for(;x<=100;x=(x+1)){
       
                //        if(r.flag)
                                //try{r.wait();}catch(Exception e){}
                if(x%2==0){
                r.set("liming","man");
                }
                else
                {
                r.set("李明","男");                                                                                                                                                                                                                  
               
       
}
   
                //r.flag=false;
                //r.notify();
                }
               
        }
}


class Output implements Runnable{
        Res r;
        public Output(Res r){
                this.r=r;
        }
        public void run(){
                for(int x=0;x<=100;x++){
                               
                                        //if(!r.flag)
                                                //try{r.wait();}catch(Exception e){}
                r.out();
                //r.flag=true;
               
        }
        }
        }
       

public class contact {

        public static void main(String[] args) {
                //Res s=new Res();
                //Input in=new Input(s);
                //Output out =new Output(s);
                //Thread t1=new Thread(in);
                //Thread t2=new Thread(out);
       
               
                new Thread(new Input(new Res())).start();//Res我也用了匿名对象代替了
                new Thread(new Output(new Res())).start();//
                //t1.start();
                //t2.start();
                // TODO 自动生成的方法存根

        }

}

匿名对象会分配内存吗?如果分配的话,我只new Res(),一次说明内存中只有一个 Res的资源,那么当input 和output对Res资源进行操作的时候应该不会出错的啊?   这时你可能会说 当我们只对资源操作一次时 才用匿名对象。那么请看下面:
class QQ{
public void show(){
System.out.println("hello");
}
}
class opq{
        static int x;
public static void main(String[] args){
//匿名对象调用方法多次
        for(x=0;x<=10;x++){
  new QQ().show();
}
}
}
如果匿名对象只能被操作一次的话,这个为什么又可以被多次操作?
  
作者: osully    时间: 2014-3-29 17:56
你这都匿名了11个对象了..........不是一个
作者: 海世山盟    时间: 2014-3-29 18:22
osully 发表于 2014-3-29 17:56
你这都匿名了11个对象了..........不是一个

哎呀。好像真的是哦。。豁然开朗了。。上面的好像也是这个问题。匿名了一堆 Res。所以input output搞不定了。。。
谢谢了啊。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2