黑马程序员技术交流社区

标题: 实现Runnable后 类中有currentThread().getName()方法吗? [打印本页]

作者: 文景    时间: 2015-5-26 02:21
标题: 实现Runnable后 类中有currentThread().getName()方法吗?
  1. class Ticket implements Runnable{
  2.         private int tick = 100;
  3.         Object o = new Object();
  4.         public void run(){
  5.                 while(true){
  6.                         synchronized(o){
  7.                                 if(tick > 0){
  8.                                 try{Thread.sleep(10);}catch(Exception e){}
  9.                                 System.out.println(currentThread().getName());
  10.                         }
  11.                         }
  12.                 }
  13.         }
  14. }
  15. public class Demo{
  16.         public static void main(String args[]){
  17.                 Ticket t = new Ticket();
  18.                 Thread t1 = new Thread(t);
  19.                 Thread t2 = new Thread(t);
  20.                 Thread t3 = new Thread(t);
  21.                 Thread t4 = new Thread(t);
  22.                 t1.start();
  23.                 t2.start();
  24.                 t3.start();
  25.                 t4.start();
  26.         }
  27. }
复制代码

上面代码提示找不到currentThread()方法,这是为什么?
作者: 文景    时间: 2015-5-26 02:50
发现好像要加上Thread才行,Thread.currentThread();说好的继承呢
作者: wangkai    时间: 2015-5-26 09:35
你可以看一下API帮助文档,Runnable是一个接口,它只有一个run方法。
currentThread() ; 返回一个Thread对象,并且是一个静态方法,可以直接被类名调用,
即  Thread.currentThread()

作者: 小悟空et    时间: 2015-5-26 10:41
应该写成   Thread.currentThread().getName()
作者: rsl123456    时间: 2015-5-26 11:11
Runnble是一个借口,只有一个run()函数,所以实现Runnble,是不会有currentThread().getName()函数的,
currentThread().getName()函数是Thread类中的一个静态函数
作者: 志行    时间: 2015-5-26 11:29
楼上正解~~
作者: 星辉祝愿    时间: 2015-5-26 14:22
获取当前线程名称跟Runnable接口无关,直接写Thread.currentThread().getName()
作者: mmakun    时间: 2015-5-26 15:46
创建线程之后才能有currentThread.getName()方法
作者: l598790586    时间: 2015-5-26 17:14
没有继承Thread类,要用类名调用这个静态方法,如果不想用类名调用,可以使用静态导入




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