一个简单的线程问题
public class ThreadDemo1 extends Thread{
public void run(){
for(int a=0;a <50;a++){
try {
Thread.sleep(5);
}
catch (Exception ex) {
}
System.out.println(Thread.currentThread().getName()+ " "+a);
}
}
public static void main(String [] args){
ThreadDemo1 t1=new ThreadDemo1();
ThreadDemo1 t2=new ThreadDemo1();
ThreadDemo1 t3=new ThreadDemo1();
t1.run();
t2.run();
t3.run();
}
}
小弟有两个地方不太明白
1、Thread.currentThread().getName() 打印的是 "mian " 而不是 "Thread -0 "之类的结果
2、为什么打印结果是:0~49,然后又打印0~49,最后再次打印0~49
而不是
三次循环夹杂打印呢
在线等待回复,谢谢
------解决方案--------------------因为你一直在执行run方法,不是线程的start方法
------解决方案--------------------public class TestThread {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
System.out.println(Thread.currentThread().getName());
ThreadDemo1 t1 = new ThreadDemo1();
ThreadDemo1 t2 = new ThreadDemo1();
ThreadDemo1 t3 = new ThreadDemo1();
t1.start();
t2.start();
t3.start();
}
}
class ThreadDemo1 extends Thread {
public void run() {
for (int a = 0; a < 50; a++) {
try {
Thread.sleep(5);
} catch (Exception ex) {
}
System.out.println(Thread.currentThread().getName() + " " + a);
}
}
}
------解决方案--------------------调用run方法的时候,这个整个程序就不作为线程来执行了,而是跟一般的程序一样,顺序执行,一直执行完
------解决方案--------------------run方法只是一个普通方法,只有调用start才能达到效果,而在main方法中运行的线程打印出main也就不奇怪了