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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 钱志新 中级黑马   /  2013-2-1 22:59  /  1590 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 钱志新 于 2013-2-2 00:30 编辑

class Res {
private String name;
private String sex;
private 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 {
private Res r;
Input(Res r) {
  this.r = r;
}
public void run() {
  int x = 0;
  while (true) {
   if (x == 0)
    r.set("mike", "man");
   else
    r.set("莉莉", "女");
   x = (x + 1) % 2;
  }
}
}
class Output implements Runnable {
private Res r;
Output(Res r) {
  this.r = r;
}
public void run() {
  while (true) {
   r.out();
  }
}
}
public class InputOutputDemo {
public static void main(String args[]) {
  Res r = new Res();
  new Thread(new Input(r)).start();
  new Thread(new Output(r)).start();
}
}
//程序是毕老师第12天代码优化视频中的,在我电脑上就出现如图错误,求指教。

2.jpg (17.85 KB, 下载次数: 37)

不解。

不解。

2 个回复

倒序浏览
Output(Res s) {
        this.r = r;
}
你写错了,要改正一下
Output(Res r) {
        this.r = r;
}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
黄锦成 发表于 2013-2-1 23:09
Output(Res s) {
        this.r = r;
}

楼上正解.
报错是空指针异常.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马