public class Test1 extends Thread { public void run() { 
for (int i = 0; i < 16; i++) { 
System.out.println(Thread.currentThread().getName() + " " + i); 

} public static void main(String[] args) { 
Test1 t1 = new Test1(); 
t1.start(); 
t1.run(); 
} } 
结果: 
main 0 
Thread-0 0 
main 1 
Thread-0 1 
Thread-0 2 
Thread-0 3 
****************** 
Thread-0 0 
main 0 
Thread-0 1 
main 1 
main 2 
main 3为什么会有第二种结果?这个程序的执行流程是什么?

解决方案 »

  1.   

    多线程中,线程的执行顺序是不固定的。准确地说,线程的启动顺序可能是可以追踪的,但是System.out.println(Thread.currentThread().getName() + " " + i); 这句话的执行次序就不一定了,很有可能后启动的线程却先执行这个语句。
      

  2.   

    都是高手啊,学习!
    你不觉得你的程序有问题么,start了怎么还run啊
      

  3.   

    多线程 运行顺序不是固定的. 程序start后再run不对吧.
      

  4.   

    不过,当前只有两个线程就是main和thread-0