public class MyThread extends Thread {
public MyThread() {

start();
}

@Override
public void run() {
int i=0;
while(i<3){
System.out.println(i);
System.out.println(Thread.currentThread().getId());
try {
sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
++i;
}

}
public static void main(String[] args) {
MyThread mythread=new  MyThread();
System.out.println("d");
}
}

解决方案 »

  1.   

    线程的题 很少有固定答案的  所以运行的次数多了,结果也不一样,但是可以分析每种可能。
    你自己写的线程肯定是输出0然后是id号 1   id号  2   id号,当然d的输出不一定,因为主线程和你自己的线程是并行的,所以不好掌握输出d的位置。
      

  2.   

    主线程和你定义的线程同时执行, 当执行到构告方法时,启动了线程也就是start();这时候main()的主线程是继续往 下执行的. 至于为什么d老是第一个输出我就不清楚 了. 一般谁先抢到cpu资源谁就先输出了.可能是d老能抢到资源吧.
      

  3.   

    我试了几回   有几回d不是第一个出的,大家要是有耐心可以多试几回 ,呵呵  因为目前的代码来看 main线程比较给力