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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张振纲 中级黑马   /  2012-8-2 16:50  /  3065 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Data
  2. {
  3. String name;
  4. String number;

  5. }

  6. class Save implements Runnable
  7. {
  8. Save(Data d)
  9. {
  10. this.d=d;
  11. }
  12. public void run()
  13. {
  14. int x = 0;
  15. while (true)
  16. {
  17. if (x==0)
  18. {
  19. d.name="张三";
  20. d.number="111111111";
  21. x++;
  22. }
  23. else
  24. {
  25. d.name="李四";
  26. d.number="0000000";
  27. x--;
  28. }
  29. }
  30. }
  31. }

  32. class Get implements Runnable
  33. {
  34. Get(Data d)
  35. {
  36. this.d=d;
  37. }
  38. public void run()
  39. {
  40. while (true)
  41. {
  42. System.out.println(d.name+"----"+d.number);
  43. }
  44. }
  45. }

  46. class Running
  47. {
  48. public static void main(String[] args)
  49. {
  50. Data d = new Data();

  51. Save s = new Save(d);
  52. Get g = new Get(d);

  53. Thread t1 = new Thread(s);
  54. Thread t2 = new Thread(g);

  55. t1.start();
  56. t2.start();

  57. }
  58. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
包晗 + 1

查看全部评分

7 个回复

倒序浏览
你的d指的是Data吧,你只在构造函数中写了Data d,这时候的d是临时变量,不行的,你要在类里面 private Date d;
回复 使用道具 举报
楼上说的很对,你用this调用d,this是对自己成员的调用,你没用定义该成员,当然是找不到了
回复 使用道具 举报
本帖最后由 杜佳瑞 于 2012-8-2 17:23 编辑

你在Get类和Save类中都没定义成员变量d,就在函数中this.d=d;操作这个d肯定是找不到呀
在Get和Save的开头定义一个Data d=new Data();就没问题了
回复 使用道具 举报
楼上正解,加一个成员变量Date d即可
回复 使用道具 举报
above all right!
回复 使用道具 举报
http://124.164.232.8/file/MDAwMDAwMDFSdBlITbu7lrIBDtboFUjqEQw5-JU00Z_PaXBxTjU1_g../c616340a317de376b508a13cc7abc6182e3e2d0/%E9%BB%91%E9%A9%AC%E7%A8%8B%E5%BA%8F%E5%91%98_%E6%AF%95%E5%90%91%E4%B8%9C_Java%E5%9F%BA%E7%A1%80%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B%E7%AC%AC06%E5%A4%A9-01-%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%28Static%E5%85%B3%E9%94%AE%E5%AD%97%29.zip?key=AAABQFAaVqS3IzTa&p=&a=33832806-72420908&mode=download
建议你可以下载毕向东老师的这个视频学习,对你很有帮助 看完后你就解决这个问题了!
回复 使用道具 举报
//楼主看我注释

class Data
{
String name;
String number;

}

class Save implements Runnable
{//加上这一行,d声明并实例化
        private Data d = new Data();
        Save(Data d)
        {
        this.d=d;
        }
        public void run()
        {
        int x = 0;
        while (true)
        {
        if (x==0)
        {
        d.name="张三";
        d.number="111111111";
        x++;
        }
        else
        {
        d.name="李四";
        d.number="0000000";
        x--;
        }
        }
        }
}

class Get implements Runnable
{//加上这一行,d声明并实例化
        private Data d = new Data();

        Get(Data d)
        {
        this.d=d;
        }
        public void run()
        {
        while (true)
        {
        System.out.println(d.name+"----"+d.number);
        }
        }
}

class Running
{
        public static void main(String[] args)
        {
        Data d = new Data();
       
        Save s = new Save(d);
        Get g = new Get(d);
       
        Thread t1 = new Thread(s);
        Thread t2 = new Thread(g);
       
        t1.start();
        t2.start();
       
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马