老师,这里Thread01类中for循环的println()里我没加" i ",而是直接打印了线程名字,如下代码:
package com.ljp.Runnable;
public class Thread01 implements Runnable{
@Override
public void run() {
for(int i=0;i<10;i++){
System.out.println(Thread.currentThread().getName() + "------------------");
// System.out.println(Thread.currentThread().getName() + "------------------" + i);
}
}
}
在主线程中,println()里面有" i ",如下代码:
package com.ljp.Runnable;
public class Test {
public static void main(String[] args) {
Thread01 t01 = new Thread01();
Thread td01 = new Thread(t01,"北坡的八百标兵");
td01.start();
for(int i=0; i<10;i++){
System.out.println(Thread.currentThread().getName() + "-------------------------------" + i);
}
}
}
运行结果,主线程结果总是在线程1运行结果后面,如下运行结果:
北坡的八百标兵------------------
北坡的八百标兵------------------
北坡的八百标兵------------------
北坡的八百标兵------------------
北坡的八百标兵------------------
北坡的八百标兵------------------
北坡的八百标兵------------------
北坡的八百标兵------------------
北坡的八百标兵------------------
北坡的八百标兵------------------
main-------------------------------0
main-------------------------------1
main-------------------------------2
main-------------------------------3
main-------------------------------4
main-------------------------------5
main-------------------------------6
main-------------------------------7
main-------------------------------8
main-------------------------------9
但是Thread01类的println()加上 " i ",就不会出现上面情况,运行结果如下:
main-------------------------------0
北坡的八百标兵------------------0
北坡的八百标兵------------------1
main-------------------------------1
北坡的八百标兵------------------2
main-------------------------------2
北坡的八百标兵------------------3
北坡的八百标兵------------------4
北坡的八百标兵------------------5
main-------------------------------3
北坡的八百标兵------------------6
main-------------------------------4
北坡的八百标兵------------------7
main-------------------------------5
北坡的八百标兵------------------8
main-------------------------------6
北坡的八百标兵------------------9
main-------------------------------7
main-------------------------------8
main-------------------------------9
为什么?????