首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

一个线程的有关问题

2011-12-27 
一个线程的问题packageonepublicclassSimpleThreadextendsThread{privateintcountDown5privatestaticin

一个线程的问题
package   one;


public   class   SimpleThread   extends   Thread{
private   int   countDown=5;
private   static   int   threadCount=0;
public   SimpleThread(){
super( " "+   ++threadCount);
start();
}
public   String   toString(){
return   "# "+getName()+ ": "+countDown;
}
public   void   run(){
while(true){
System.out.println(this);
if(--countDown==0)return;
}
}
public   static   void   main(String[]   args)   {
for(int   i=0;i <5;i++)
new   SimpleThread();
}

}

这段程序输出入下:
#1:5
#1:4
#1:3
#1:2
#1:1
#2:5
#2:4
#2:3
#2:2
#2:1
#3:5
#3:4
#3:3
#3:2
#3:1
#4:5
#4:4
#4:3
#4:2
#4:1
#5:5
#5:4
#5:3
#5:2
#5:1

请问为什么程序进行到这行代码System.out.println(this);的时候,调用toString()这个方法;

[解决办法]
系统自动调用啊,就是这样的比如你写
int a = 1;
System.out.println(a);
实际上相当于
System.out.println(a.toString());

[解决办法]

是自动的
[解决办法]
super( " "+ ++threadCount);
请问这句是调用Thread类的那个构造方法。参数之间为什么没有,隔开。
--------------
调用Thread(String name)构造方法
super( " "+ ++threadCount); -> super( " "+ (++threadCount));
" "+ (++threadCount)得到一个字符串,将它作为现称的名字

热点排行