Java线程概念:输出解释

时间:2011-11-09 11:00:42

标签: java multithreading

任何人都可以告诉我为什么在我运行程序时出现在以下行中的5

CURRENT THREAD IS: Thread[main,5,main]

该程序来自书籍Java Complete Reference,这是程序:

public class CurrentThreadDemo 
{
public static void main(String args[])
{
Thread t = Thread.currentThread();
System.out.println("CURRENT THREAD IS: " + t);
t.setName("ChangedThreadName");
System.out.println("CHANGED THREAD NAME IS: " + t);

try
{
for(int n = 8; n > 0; n--)
System.out.println(n);
Thread.sleep(1000);
}

catch(InterruptedException e)
{
System.out.println("Main Thread Interrupted " + e);
}
}
}

以下程序的输出是:

CURRENT THREAD IS: Thread[main,5,main]
CHANGED THREAD NAME IS: Thread[ChangedThreadName,5,main]
8
7
6
5
4
3
2
1

4 个答案:

答案 0 :(得分:3)

您隐含地呼叫Thread.toString()。该方法的Javadoc表示它

  

返回此线程的字符串表示形式,包括线程的名称,优先级和线程组。

查看源代码确认了这一点:

    return "Thread[" + getName() + "," + getPriority() + "," + 
               group.getName() + "]";

总之,第二项是线程优先级

在我的JDK上(可能在你的JDK上),5Thread.NORM_PRIORITY的值。

答案 1 :(得分:0)

查看Thread#toString(),这是该主题的优先级。

答案 2 :(得分:0)

我认为数字5是程序主线的优先级;它与循环中的数字无关。

答案 3 :(得分:0)

这是Thread.toString的代码:

 public String toString() {
    ThreadGroup group = getThreadGroup();
if (group != null) {
    return "Thread[" + getName() + "," + getPriority() + "," + 
               group.getName() + "]";
} else {
    return "Thread[" + getName() + "," + getPriority() + "," + 
                "" + "]";
}
}

如您所见,'5'是线程的优先级。