很正常。Thread执行的顺序不是固定的,并不一定按照启动时的顺序走。很多程序都演示过这一点。

解决方案 »

  1.   

    在你没有设置线程优先级的情况下,每个线程的优先级都是默认的,他们在执行时会抢CPU的时间片,谁先抢到,谁就执行.
      

  2.   

    TimePrinter tp1 = new TimePrinter(1000, "Fast Guy");
    tp1.start();
    TimePrinter tp2 = new TimePrinter(1000, "Slow Guy");
    tp2.start();
    就是说,虽然tp1先start(),但在他执行run(),这段空隙中,tp2执行了start(),run(),是吗?
      

  3.   

    调用start() 只能说该线程出于待执行状态,  并不意味线程开始执行 !
    具体什么时候执行是系统管理的.