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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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()方法,这是为什么?

8 个回复

倒序浏览
发现好像要加上Thread才行,Thread.currentThread();说好的继承呢
回复 使用道具 举报
你可以看一下API帮助文档,Runnable是一个接口,它只有一个run方法。
currentThread() ; 返回一个Thread对象,并且是一个静态方法,可以直接被类名调用,
即  Thread.currentThread()
回复 使用道具 举报
应该写成   Thread.currentThread().getName()
回复 使用道具 举报
Runnble是一个借口,只有一个run()函数,所以实现Runnble,是不会有currentThread().getName()函数的,
currentThread().getName()函数是Thread类中的一个静态函数
回复 使用道具 举报
楼上正解~~
回复 使用道具 举报
获取当前线程名称跟Runnable接口无关,直接写Thread.currentThread().getName()
回复 使用道具 举报
mmakun 中级黑马 2015-5-26 15:46:03
8#
创建线程之后才能有currentThread.getName()方法
回复 使用道具 举报
没有继承Thread类,要用类名调用这个静态方法,如果不想用类名调用,可以使用静态导入
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马