本帖最后由 の放下执著 于 2013-8-1 06:33 编辑
很明显,你的d2.start();放在了for循环后,意思是说要等for循环打印完了才开启线程2,,所以当然是:运行结果 d1与main线程交替打印 结束后,d2才开始打印。
下面就拿主函数main内的代码分析吧:
public static void main(String[] args)
{
Demo d1 = new Demo("one");//创建线程d1
Demo d2 = new Demo("two");//创建线程d2
/*注意了,上面的两条语句仅仅是创建了线程,仅此而已。
线程的真正开启,是在调用了start()方法之后*/
d1.start(); //线程d1开启
/*当线程main执行完下面的for()循环后线程d2才开启,代码的执行顺序是从上到下的*/
// for(int x=0;x<300;x++)
// System.out.println(Thread.currentThread()+"main run"+x);</font>
d2.start(); //线程d2才开启,这时候线程main里面的输出语句早打印完了
|