任何人都可以告诉我为什么在我运行程序时出现在以下行中的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
答案 0 :(得分:3)
您隐含地呼叫Thread.toString()
。该方法的Javadoc表示它
返回此线程的字符串表示形式,包括线程的名称,优先级和线程组。
查看源代码确认了这一点:
return "Thread[" + getName() + "," + getPriority() + "," +
group.getName() + "]";
总之,第二项是线程优先级。
在我的JDK上(可能在你的JDK上),5
是Thread.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'是线程的优先级。