日期:2014-05-20  浏览次数:20696 次

关于线程的基本问题
public class XC{
public static void main(String args[]){
Thread t=Thread.currentThread();
System.out.println("主线程"+t);//这一句为什么没输出t.setName("My Thread");
System.out.println("改变名称后:"+t);
try{
for(int i=0;i<5;i++){
System.out.println(i);
t.sleep(200);
}
}
catch(Exception e){
System.out.println("发生异常");
}
}
}
运行结果如下:
改变名称后:Thread[My Thread,5,main]
0
1
2
3
4
输出结果不理解

------解决方案--------------------
这不是多线程,只有一个线程。要实现多线程得实现Thread或call或runable。
------解决方案--------------------
我的结果
主线程Thread[main,5,main]
改变名称后:Thread[main,5,main]
0
1
2
3
4

输出结果:
Thread[main,5,main]是你的Thread对象t 引用了toString()方法后输出的字符串(可以System.out.println下)。
查API Thread toString() 
返回该线程的字符串表示形式,包括线程名称、优先级和线程组。
后面的是循环输出了5个数( ⊙ o ⊙ )!
------解决方案--------------------
是不是看错了? 我运行的结果有的啊
结果:-------
主线程Thread[main,5,main]
改变名称后:Thread[main,5,main]
0
1
2
3
4

------解决方案--------------------
主线程Thread[main,5,main]
改变名称后:Thread[main,5,main]
0
1
2
3
4

有结果啊
------解决方案--------------------
可能是楼主rp出问题了,
我机器正常输出。
------解决方案--------------------
一个是可以正常输出,另外一个:t.sleep(200);这个这样写规范吗?sleep()是静态方法,直接用类名调用就好了,你那里没有给出提示吗?Thread.sleep(200);