A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Resource
{
        String name;
        String sex;

}
class Input implements Runnable
{
        Resource r;
        Input(Resource r)
        {
                this.r = r;
               
        }
        public void run()
        {
                int x = 0;
                while(true)
                {         synchronized(r)
                        {       
                                if(r.flag)
                                        try{r.wait();}catch(InterruptedException e){}
                                if(x==0)
                                {
                                          r.name="mike";
                                          r.sex="nan";
                                }       
               

                                else
                                {
                                        r.name="丽丽";
                                        r.sex="女女女女";
                                }
                                r.flag = true;
                                r.notify();
                        }
                        x = (x+1)%2;
                }
                               
        }       
}
class Output implements Runnable
{
        Resource r;
        Output(Resource r)
        {       
                this.r = r;
        }       
        public void run()       
        {        while(true)
                {
                       
                        synchronized(r)
                        {
                        if(!r.flag)
                        try{r.wait();}catch(InterruptedException e){}

                        System.out.println(r.name+"....."+r.sex);

                        r.flag = false;
                        r.notify();
                        }
               
                }

        }       
}
class ResourceDemo
{
        public static void main(String[] args)
        {
         // 创建资源
        Resource r = new Resource();
        // 创建任务
        Input in = new Input(r);
        Output out = new Output(r);
        //  创建线程
        Thread t1 = new Thread(in);
        Thread t2 = new Thread(out);
        // 开启线程
        t1.start();
        t2.start();
        }
}

8 个回复

倒序浏览
if(r.flag)   把if改成while
      try{r.wait();}catch(InterruptedException e){}
回复 使用道具 举报
黑夜中那颗星 发表于 2015-10-26 16:43
if(r.flag)   把if改成while
      try{r.wait();}catch(InterruptedException e){}

还是一样,编译不了
回复 使用道具 举报
把错误提示贴出来瞅瞅
回复 使用道具 举报
史世锋 发表于 2015-10-26 19:19
把错误提示贴出来瞅瞅

ResourceDemo.java:21: 错误: 找不到符号
                                if(r.flag)
                                    ^
  符号:   变量 flag
  位置: 类型为Resource的变量 r
ResourceDemo.java:21: 错误: 非法的类型开始
                                if(r.flag)
                                  ^
ResourceDemo.java:35: 错误: 找不到符号
                                r.flag = true;
                                 ^
  符号:   变量 flag
  位置: 类型为Resource的变量 r
ResourceDemo.java:56: 错误: 找不到符号
                        if(!r.flag)
                             ^
  符号:   变量 flag
  位置: 类型为Resource的变量 r
ResourceDemo.java:61: 错误: 找不到符号
                        r.flag = false;
                         ^
  符号:   变量 flag
  位置: 类型为Resource的变量 r
5 个错误
回复 使用道具 举报
兄弟你的Resource 类里根本就没有flag变量啊,在 String sex;后边加一句boolean flag;就好了
回复 使用道具 举报
大哥,不是吧,你Resource里面哪里来的flag?你这查找问题的能力得练啊
回复 使用道具 举报
azhuang 中级黑马 2015-10-27 10:50:15
8#
疯狂的小豆丁 发表于 2015-10-27 08:05
大哥,不是吧,你Resource里面哪里来的flag?你这查找问题的能力得练啊

是啊。大哥,小弟没半点基础,现在在拼命自学过程中。前辈多多赐教。
回复 使用道具 举报
azhuang 中级黑马 2015-10-27 10:51:44
9#
chaoslu 发表于 2015-10-26 21:02
兄弟你的Resource 类里根本就没有flag变量啊,在 String sex;后边加一句boolean flag;就好了 ...

恩,是这样的哦,真的,小弟我太笨了。现在在努力中
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马