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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨翔 中级黑马   /  2013-1-15 11:12  /  1176 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 冯海霞 于 2013-1-16 11:07 编辑

这个一个卖票的小程序,我的疑问是在获取当前运行对象的名称的地方,我用this.getName是会报错的,同样是使用当前对象调用getName方法啊,为什么用this就会报找不到符号错误呢
  1. class Ticket implements Runnable
  2. {
  3.    private int ticket = 100;
  4.    public void run()
  5.    {
  6.       while(true)
  7.       {
  8.          if(ticket > 0)
  9.          {
  10.               //此处获取当前对象的名称并打印票,但是这样用this是报错的,要用 Thread.currentThread().getName()    才可以        
  11.               System.out.println(this.getName() + "------------" + ticket--);        
  12.          }
  13.       }
  14.               
  15.    }        
  16. }

  17. class TicketDemo
  18. {
  19.    public static void main(String[] args)
  20.    {
  21.       Ticket t = new Ticket();
  22.       //建立线程
  23.       Thread t1 = new Thread(t);
  24.       Thread t2 = new Thread(t);
  25.       
  26.       t1.start();
  27.       t2.start();

  28.    }         
  29. }
复制代码

评分

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

查看全部评分

1 个回复

倒序浏览
你的Ticket 类实现的是Runnable接口,在这个接口中没有getName()这个方法,所以this.getName()会报错,而使用Thread.currentThread().getName(),是因为Thread类实现了Runnable接口,Thread.currentThread()的返回值是一个Thread对象,通过对象调用getName()方法,获得当前的线程名称。

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马