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
而不是
三次循环夹杂打印呢
在线等待回复,谢谢

解决方案 »

  1.   

    因为你一直在执行run方法,不是线程的start方法
      

  2.   

    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);
    }
    }
    }
      

  3.   

    调用run方法的时候,这个整个程序就不作为线程来执行了,而是跟一般的程序一样,顺序执行,一直执行完
      

  4.   

    run方法只是一个普通方法,只有调用start才能达到效果,而在main方法中运行的线程打印出main也就不奇怪了