代码如下
public class Demo01Thread{
public static void main(String[] args){
MyThread mt=new MyThread();
mt.start();
for(int i=0;i<20;i++){
System.out.println("main"+i);
}
}
}
public class MyThread extends Thread(
@Override
public void run(){
20.fori
sout("run"+i);
}
)
程序结果:结果不唯一
run:0
main:0
run:1
main:1
...
原理解析:
1. jvm执行main方法,找OS开辟一条main方法通向cpu的路径,这个路径叫main线程(主线程)。cpu通过这个线程可以执行main方法。
2.当执行到new语句时,开辟一条通向cpu的新路径,用来执行run方法。
3.对于cpu而言,就有了两条执行的路径,cpu就有了选择的权利。cpu喜欢谁,就会执行哪条路径,我们控制不了cpu,所以就有了程序的随机打印结果。两个线程,一个main线程,一个新线程一起抢夺cpu的执行权(执行时间),谁抢到了谁执行对应的代码。