黑马程序员技术交流社区

标题: 关于获取当前线程对象的疑问 [打印本页]

作者: 杨翔    时间: 2013-1-15 11:12
标题: 关于获取当前线程对象的疑问
本帖最后由 冯海霞 于 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. }
复制代码

作者: 张敬培    时间: 2013-1-15 14:54
你的Ticket 类实现的是Runnable接口,在这个接口中没有getName()这个方法,所以this.getName()会报错,而使用Thread.currentThread().getName(),是因为Thread类实现了Runnable接口,Thread.currentThread()的返回值是一个Thread对象,通过对象调用getName()方法,获得当前的线程名称。






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