public class thread {
public static void main(String[] args) {
thread1 threadA = new thread1();
thread2 threadB = new thread2();
threadB.start();
threadA.run();
for (int i = 10; i > 0; i--) {
System.out.println(Thread.currentThread()+"线程C执行情况:" + i);
}
}
}
class thread1 implements Runnable {
@Override
public void run() {
for (int i = 10; i > 0; i--) {
System.out.println(Thread.currentThread()+"线程A执行情况:" + i);
}
}
}
class thread2 extends Thread {
@Override
public void run() {
for (int i = 10; i > 0; i--) {
System.out.println(Thread.currentThread()+"线程B执行情况:" + i);
}
}
}
运行结果如下,线程的执行循序为何是ACB。
![](https://img2020.cnblogs.com/q/1304646/202006/1304646-20200602100001714-2130208996.jpg)
因为A调用的是run()方法,所以实际上是没有启动线程的,A和C是顺序的,必然是A先打印完再打印C,但是B是一个新的线程调用,结果是不确定的,你现在显示ACB,多跑几次或者i设置大一点就不一定了,只能保证A在C前,B的打印顺序是不确定的
启动线程是调用Thread类的start方法,调用run方法并不会启动线程,而是像调用普通方法一样。