Thread.currentThread ().getName 运行得到:Thread-0
Thread.currentThread ()         运行得到:Thread[Thread-0,5,main]
..........................
我查看api文档getName():返回该线程的名称。Thread.currentThread ():返回对当前正在执行的线程对象的引用。
...............
我的疑问是:线程是个类,类名是叫Thread,上诉方法得到的是线程的对象名吗?怎么会有两个,还有请帮我分析Thread[Thread-0,5,main]每个字段的意思。谢谢

解决方案 »

  1.   

    currentThread() 返回当前线程对象,输出时调用Thread的toString()方法 public String toString() {
            ThreadGroup group = getThreadGroup();
    if (group != null) {
        return "Thread[" + getName() + "," + getPriority() + "," + 
               group.getName() + "]";
    } else {
        return "Thread[" + getName() + "," + getPriority() + "," + 
                "" + "]";
    }
        }
      

  2.   

    看API,Thread实现了Runnable接口。currentThread是一个静态方法。
    在main方法中, Thread.currentThread ().getName,得到的是主线程,名字叫Thread-0。
    Thread.currentThread () 得到main方法中的主线程:Thread[Thread-0,5,main]
      

  3.   

    Thread.currentThread ().getName 运行得到:Thread-0
    Thread-0就是当前线程(主线程)的名字。
    Thread.currentThread () 运行得到:Thread[Thread-0,5,main]
    Thread.currentThread ()这个的值就是当前线程(主线程)的对象。
    Thread[Thread-0,5,main]Thread-0不就是上面的线程名嘛,5表示线程优先级,main是线程组的名称。(API中就说明了)System.out.printn(Thread.currentThread ());会自动调用对象的toString()方法,这是Java的特性。也就是说,Thread[Thread-0,5,main]是Thread.currentThread ()的toString()的返回值。
      

  4.   

    Thread[Thread-0,5,main]是自动调用toString方法打印的 public String toString() {
            ThreadGroup group = getThreadGroup();
    if (group != null) {
        return "Thread[" + getName() + "," + getPriority() + "," + 
               group.getName() + "]";
    } else {
        return "Thread[" + getName() + "," + getPriority() + "," + 
                "" + "]";
    }
        }源码里说的很清楚 一一对应下来就是:当前线程名称--》线程优先级--》线程所在组的名称
    楼主也可以覆写toString方法 换成其他的输出